$c->add_service( Bread::Board::BlockInjection->new( name => 'authenticator', block => sub { my $service = shift; Authenticator->new( db_conn => $service->param('db_conn'), logger => $service->param('logger') ); }, dependencies => { db_conn => Bread::Board::Dependency->new( service_path => 'db_conn' ), logger => Bread::Board::Dependency->new( service_path => 'logger' ), } ) );
$c = IOC::Slinky::Container->new( config => { container => { # constructor injection dbh => { _class => "DBI", _constructor => "connect", _constructor_args => [ "DBD:SQLite:dbname=/tmp/my.db", "user", "pass", { RaiseError => 1 }, ], }, # setter injection y2k => { _singleton => 0, _class => "DateTime", year => 2000, month => 1, day => 1, }, } } );
my $c = Peco::Container->new; $c->register('log_mode', O_APPEND); $c->register('log_file', '/var/log/my-app.log'); $c->register('log_fh', 'IO::File', ['log_file', 'log_mode']); $c->register('my_logger', 'My::Logger', ['log_fh']);
my $kaiten_config = { examplep_config => { handler => sub { { RaiseError => 1 } }, probe => sub { 1 }, settings => { reusable => 1 }, }, ExampleP => { handler => sub { my $c = shift; my $conf = $c->get_by_name('examplep_config'); return DBI->connect( "dbi:ExampleP:", "", "", $conf ) or die $DBI::errstr; }, probe => sub { shift->ping() }, settings => { reusable => 1 } } }; my $container = Kaiten::Container->new( init => $kaiten_config ); my $dbh = $container->get_by_name('ExampleP');
# Failed test 'use Kaiten::Container;' # at t/00-load.t line 6. # Tried to use 'Kaiten::Container'. # Error: Argument "1.12_03" isn't numeric in numeric gt (>)...
Source: https://habr.com/ru/post/134891/
All Articles