Skip to content
Inversion of control in Perl 6
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
t
.gitignore
.travis.yml
Changes
LICENSE
META6.json
README.md
appveyor.yml

README.md

Build Status

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 container of all these components and allow the components to cleanly interact with each other as services.

EXPORTED FUNCTIONS

  • container

Creates a new IoC::Container object. In the block you create your services.

  • service

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

  • IoC::Container - Container of all your application components

  • IoC::Service - Service representing a component in your application

ACKNOWLEDGEMENTS

  • 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.

You can’t perform that action at this time.