NAME
IOC::Service - An IOC Service object
SYNOPSIS
use IOC::Service;
my $container = IOC::Container->new();
$container->register(IOC::Service->new('log_file' => sub { "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.
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. - instance
-
This method returns the component held by the service object, the is basically the value returned by the
$block
constructor argument.
TO DO
- Work on the documentation
- Allow for prototyped services as well as the current singleton style
-
I am still thinking about the best way to handle this.
- Create a InterfaceInjection service
-
This is the most complex of all the injection methods, and will require the most code. I have to read up on this technique a little more first.
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 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.