jasonmay/perl6-ioc/lib/IoC

perl6-ioc src

NAME

IoC - Wire your application components together using inversion of control

SYNOPSIS

  use IoC;

  my $c = container 'myapp' => contains {

      service 'logfile' => 'logfile.txt';

      service 'logger' => {
          'class'        => 'MyLogger',
          'lifecycle'    => 'Singleton',
          'dependencies' => {'logfile' => 'logfile'},
      };

      service 'storage' => {
          'lifecycle' => 'Singleton',
          'block'     => sub {
              ...
              return MyStorage.new();
          },
      };

      service 'app' => {
          'class'        => 'MyApp',
          'lifecycle'    => 'Signleton',
          'dependencies' => {
              'logger'  => 'logger',
              'storage' => 'storage',
          },
      };

  };

  my $app = $c.resolve(service => 'app');
  $app.run();

 

DESCRIPTION

IoC is a port of stevan++'s Perl 5 module Bread::Board.

INVERSION OF CONTROL

Inversion of control is a way of keeping all your component creation logic in one place. Instead of creating an object and explicitly pass it around everywhere, one could just make a I<container> of all these components and allow the components to cleanly interact with each other as I<services>.

EXPORTED FUNCTIONS

(item) B
Creates a new L<IoC::Container> object. In the block you create your services.
(item) B
Adds services to your container, bringing your components together. See IoC::Service for more information on this.

BUGS

All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or post an issue to http://github.com/jasonmay/perl6-ioc/

REFERENCE

(item) L - Container of all your application components
(item) L - Service representing a component in your application

ACKNOWLEDGEMENTS

(item) Thanks to Stevan Little who is the original author of Perl 5's Bread::Board

AUTHOR

Jason May, <jason.a.may@gmail.com>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Perl 6 Tricks and Treats newsletter

Register to the free newsletter now, and get updates and news.
Email:
Name: