From f3b0919453a6a370af34ee6f2e23dc8e0e251b42 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 25 May 2011 13:57:45 -0500 Subject: make inference explicit --- lib/Bread/Board/Declare/Meta/Role/Attribute.pm | 14 ++++++++++++++ lib/Bread/Board/Declare/Role/Object.pm | 1 + 2 files changed, 15 insertions(+) (limited to 'lib') 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 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 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, -- cgit v1.2.3