1 package TestAppCustomContainer::NoSugarContainer;
3 use namespace::autoclean;
6 extends 'Catalyst::IOC::Container';
11 $self->get_sub_container('component')->add_service(
12 Catalyst::IOC::ConstructorInjection->new(
14 class => 'TestAppCustomContainer::Model::Bar',
16 depends_on( '/application_name' ),
17 depends_on( '/config' ),
18 depends_on( '/model/Foo' ),
22 $self->get_sub_container('model')->add_service(
23 Catalyst::IOC::BlockInjection->new(
26 depends_on( '/model/Foo' ),
27 depends_on( '/component/model_Bar' ),
31 my $foo = $s->param('Foo');
32 my $instance = $s->param('model_Bar');
38 $self->get_sub_container('component')->add_service(
39 Catalyst::IOC::ConstructorInjection->new(
41 class => 'TestAppCustomContainer::Model::Baz',
42 lifecycle => '+Catalyst::IOC::LifeCycle::Request',
44 depends_on( '/application_name' ),
45 depends_on( '/config' ),
46 depends_on( '/model/Foo' ),
50 $self->get_sub_container('model')->add_service(
51 Catalyst::IOC::BlockInjection->new(
54 depends_on( '/model/Foo' ),
55 depends_on( '/component/model_Baz' ),
59 my $foo = $s->param('Foo');
60 my $instance = $s->param('model_Baz');
66 $self->get_sub_container('model')->add_service(
67 Catalyst::IOC::BlockInjection->new(
69 lifecycle => 'Singleton',
71 depends_on( '/component/model_Quux' ),
73 block => sub { shift->param('model_Bar') },
77 $self->get_sub_container('component')->add_service(
78 Catalyst::IOC::ConstructorInjection->new(
80 lifecycle => 'Singleton',
81 class => 'My::External::Class',
83 depends_on( '/application_name' ),
84 depends_on( '/config' ),
88 $self->get_sub_container('model')->add_service(
89 Catalyst::IOC::BlockInjection->new(
91 lifecycle => 'Singleton',
93 depends_on( '/config' ),
94 depends_on( '/component/model_Fnar' ),
96 block => sub { shift->param('model_Fnar') },
101 __PACKAGE__->meta->make_immutable;