NAME
IOC::Service - An IOC Service object
SYNOPSIS
use IOC::Service;
my $container = IOC::Container->new();
$container->register(IOC::Service::Literal->new('log_file' => "logfile.log"));
$container->register(IOC::Service->new('logger' => sub {
my $c = shift;
return FileLogger->new($c->get('log_file'));
}));
$container->register(IOC::Service->new('application' => sub {
my $c = shift;
my $app = Application->new();
$app->logger($c->get('logger'));
return $app;
}));
$container->get('application')->run();
DESCRIPTION
In this IOC framework, the IOC::Service object holds instances of components to be managed.
+--------------+ +-------------------------+
| IOC::Service |---(instance)--->| <Your Component/Object> |
+--------------+ +-------------------------+
|
(parent_container)
|
V
+------------------+
| IOC::Container |
+------------------+
METHODS
- new ($name, $block)
-
Creates a service with a
$name
, and uses the$block
argument to initialize the service on demand. - name
-
Returns the name of the service instance.
- setContainer ($container)
-
Given a
$container
, which is an instance of IOC::Container or a subclass of it, this method will associate the service instance with that container object. - removeContainer
-
This will break the connection between a service and a container. This method is usually only called by the
unregister
method in IOC::Container. - instance
-
This method returns the component held by the service object, the is basically the value returned by the
$block
constructor argument. - deferred
-
This method returns an IOC::Service::Deferred wrapper which will lazy load the service. This is used for handling circular dependencies, and rarely used directly.
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
AUTHOR
stevan little, <stevan@iinteractive.com>
COPYRIGHT AND LICENSE
Copyright 2004-2007 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.