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 # t0m - I'm fine with this - sugar can just s/Request/+Catalyst::IOC::LifeCycle::Request/
43 # Also, 'Request' is fine as a name for a lifecycle IMO.
44 # FIXME - it should simply be Request (or InstancePerRequest, etc)
45 # see Bread/Board/Service.pm line 47
46 lifecycle => '+Catalyst::IOC::LifeCycle::Request',
48 depends_on( '/application_name' ),
49 depends_on( '/config' ),
50 depends_on( '/model/Foo' ),
54 $self->get_sub_container('model')->add_service(
55 Catalyst::IOC::BlockInjection->new(
58 depends_on( '/model/Foo' ),
59 depends_on( '/component/model_Baz' ),
63 my $foo = $s->param('Foo');
64 my $instance = $s->param('model_Baz');
70 $self->get_sub_container('model')->add_service(
71 Catalyst::IOC::BlockInjection->new(
74 # FIXME - it should probably be our
75 # Catalyst::IOC::LifeCycle::Singleton
76 # t0m - I think normal Singleton is fine here, it's per app lifetime.
77 lifecycle => 'Singleton',
79 depends_on( '/component/model_Quux' ),
81 block => sub { shift->param('model_Bar') },
85 $self->get_sub_container('component')->add_service(
86 Catalyst::IOC::ConstructorInjection->new(
88 lifecycle => 'Singleton',
89 class => 'My::External::Class',
91 depends_on( '/application_name' ),
92 depends_on( '/config' ),
96 $self->get_sub_container('model')->add_service(
97 Catalyst::IOC::BlockInjection->new(
99 lifecycle => 'Singleton',
101 depends_on( '/config' ),
102 depends_on( '/component/model_Fnar' ),
104 block => sub { shift->param('model_Fnar') },
109 __PACKAGE__->meta->make_immutable;