NAME
IOC::Registry - Registry singleton for the IOC Framework
SYNOPSIS
use IOC::Registry;
my $container = IOC::Container->new('database');
my $other_container = IOC::Container->new('logging');
# ... bunch of IOC::Container creation code omitted
# create a registry singleton
my $reg = IOC::Registry->new();
$reg->registerContainer($container);
$reg->registerContainer($other_container);
# ... somewhere later in your program
my $reg = IOC::Registry->instance(); # get the singleton
# and try and find a service
my $service = $reg->searchForService('laundry') || die "Could not find the laundry service";
my $database = $reg->getRegisteredContainer('database');
# get a list of container names
my @container_names = $reg->getRegisteredContainerList();
# and you can unregister containers too
my $unregistered_container = $reg->unregisterContainer($container);
DESCRIPTION
This is a singleton object which is meant to be used as a global registry for all your IoC needs.
METHODS
- new
-
Creates a new singleton instance of the Registry, the same singleton will be returned each time
new
is called after the first one.
Container Registration Methods
- registerContainer ($container)
-
This method will add a
$container
to the registry, where it can be accessed by it's name. - unregisterContainer ($container|$name)
-
This method accepts either the
$container
instance itself, or the$name
of the container and removes said container from the registry. - hasRegisteredContainer ($name)
-
This will return true (
1
) if a container by that$name
exists within the registry, and false (0
) otherwise. - getRegisteredContainer ($name)
-
This will retrieve a registered container by
$name
from the registry. If$name
is not defined, then an IOC::InsufficientArguments exception will be thrown. If no container is found with$name
, then an IOC::ContainerNotFound exception will be thrown. - getRegisteredContainerList
-
This will return the list of string names of all the registered containers.
Search Methods
- locateService ($path)
-
Given a
$path
to a service, this will locate the service and return it. If$path
is not specificed an IOC::InsufficientArguments exception will be thrown. - searchForService ($name)
-
Given a
$name
for a service, this will attempt to locate the service within the entire heirarchy and return it. If the service is not found, then this method will returnundef
. If$name
is not specificed an IOC::InsufficientArguments exception will be thrown. - locateContainer ($path)
-
Given a
$path
to a container, this will locate the container and return it. If$path
is not specificed an IOC::InsufficientArguments exception will be thrown. - searchForContainer ($name)
-
Given a
$name
for a container, this will attempt to locate the container within the entire heirarchy and return it. If the container is not found, then this method will returnundef
. If$name
is not specificed an IOC::InsufficientArguments exception will be thrown.
TO DO
BUGS
None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
CODE COVERAGE
I use Devel::Cover to test the code coverage of my tests, see the CODE COVERAGE section of IOC for more information.
SEE ALSO
- Class::StrongSingleton
-
This is a subclass of Class::StrongSingleton, if you want to know about how the singleton-ness is handled, check there.
AUTHOR
stevan little, <stevan@iinteractive.com>
COPYRIGHT AND LICENSE
Copyright 2004 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.