summaryrefslogtreecommitdiffstats
path: root/lib/Bread/Board/Declare
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-05-25 13:57:45 -0500
committerJesse Luehrs <doy@tozt.net>2011-05-25 14:02:09 -0500
commitf3b0919453a6a370af34ee6f2e23dc8e0e251b42 (patch)
tree5a1a4227ac0a3d96ade44750a3ed8e3e3401cff6 /lib/Bread/Board/Declare
parentbbb409dcc33fe109968c6330b555fa72ab3f8e31 (diff)
downloadbread-board-declare-f3b0919453a6a370af34ee6f2e23dc8e0e251b42.tar.gz
bread-board-declare-f3b0919453a6a370af34ee6f2e23dc8e0e251b42.zip
make inference explicit
Diffstat (limited to 'lib/Bread/Board/Declare')
-rw-r--r--lib/Bread/Board/Declare/Meta/Role/Attribute.pm14
-rw-r--r--lib/Bread/Board/Declare/Role/Object.pm1
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,