IOC::Service - An IOC Service object
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();
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 | +------------------+
Creates a service with a $name, and uses the $block argument to initialize the service on demand.
$name
$block
Returns the name of the service instance.
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.
$container
This will break the connection between a service and a container. This method is usually only called by the unregister method in IOC::Container.
unregister
This method returns the component held by the service object, the is basically the value returned by the $block constructor argument.
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.
None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
I use Devel::Cover to test the code coverage of my tests, see the CODE COVERAGE section of IOC for more information.
stevan little, <stevan@iinteractive.com>
Copyright 2004-2007 by Infinity Interactive, Inc.
http://www.iinteractive.com
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install IOC, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IOC
CPAN shell
perl -MCPAN -e shell install IOC
For more information on module installation, please visit the detailed CPAN module installation guide.