diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Bread/Board/Declare/Meta/Role/Attribute.pm | 14 | ||||
-rw-r--r-- | lib/Bread/Board/Declare/Role/Object.pm | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/Bread/Board/Declare/Meta/Role/Attribute.pm b/lib/Bread/Board/Declare/Meta/Role/Attribute.pm index a6114ea..1eabba1 100644 --- a/lib/Bread/Board/Declare/Meta/Role/Attribute.pm +++ b/lib/Bread/Board/Declare/Meta/Role/Attribute.pm @@ -83,6 +83,20 @@ has dependencies => ( predicate => 'has_dependencies', ); +=attr infer + +If true, the dependency list will be inferred as much as possible from the +attributes in the class. See L<Bread::Board::Manual::Concepts::Typemap> for +more information. Note that this is only valid for constructor injection +services. + +=cut + +has infer => ( + is => 'ro', + isa => 'Bool', +); + =attr constructor_name The constructor name to use when creating L<Bread::Board::ConstructorInjection> diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm index 9d4a938..34fbf3e 100644 --- a/lib/Bread/Board/Declare/Role/Object.pm +++ b/lib/Bread/Board/Declare/Role/Object.pm @@ -31,6 +31,7 @@ after BUILD => sub { ); } elsif ($service->isa('Bread::Board::Declare::ConstructorInjection') + && $service->associated_attribute->infer && (my $meta = Class::MOP::class_of($service->class))) { my $inferred = Bread::Board::Service::Inferred->new( current_container => $self, |