Stevan Little > IOC > IOC::Service::SetterInjection

Download:
IOC-0.29.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.06   Source  

NAME ^

IOC::Service::SetterInjection - An IOC Service object which uses Setter Injection

SYNOPSIS ^

  use IOC::Service::SetterInjection;
  
  my $service = IOC::Service::SetterInjection->new('logger' => (
                    'FileLogger', 'new', [
                        # fetch a component from another container
                        { setLogFileHandle => '/filesystem/log_file_handle' },
                        # fetch a component from our own container
                        { setLogFileFormat => 'log_file_format' }
                    ]));

DESCRIPTION ^

In this IOC framework, the IOC::Service::SetterInjection object holds instances of components to be managed.

          +--------------+
          | IOC::Service |
          +--------------+
                 |
                 ^
                 |
   +-------------------------------+
   | IOC::Service::SetterInjection |
   +-------------------------------+

METHODS ^

new ($name, $component_class, $component_constructor, $setter_parameters)

Creates a service with a $name, and uses the $component_class and $component_constructor string arguments to initialize the service on demand.

If the $component_class and $component_constructor arguments are not defined, an IOC::InsufficientArguments exception will be thrown.

Upon request of the component managed by this service, an attempt will be made to load the $component_class. If that loading fails, an IOC::ClassLoadingError exception will be thrown with the details of the underlying error. If the $component_class loads successfully, then it will be inspected for an available $component_constructor method. If the $component_constructor method is not found, an IOC::ConstructorNotFound exception will be thrown. If the $component_constructor method is found, then it will be called.

Once a valid instance has been created, then the $setter_parameter array ref is looped through. Each parameter is then a hash ref, the key being the setter method name and the value being the name of a Service (available through get or find). It is then checked if the setter method is available, if not a IOC::MethodNotFound exception is thrown. It if is found, then it is called and passed the value of the resolved service name.

TO DO ^

Work on the documentation

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 ^

Setter Injection in the PicoContainer is explained on this page

http://docs.codehaus.org/display/PICO/Setter+Injection

AUTHOR ^

stevan little, <stevan@iinteractive.com>

COPYRIGHT AND LICENSE ^

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.

syntax highlighting: