2012-03-28 2 views
1

사용 Bread::Board 나는 객체/서비스 A에 접근 자 $A->foo이 있습니다. 객체/서비스 B는 contstructor 인 경우 $A->Foo에 의존합니다. 어떻게하면 좋을까요? 여기에 내가 가지고있는 것의 예가있다Bread :: Board 서비스 B는 서비스의 접근 자에 따라 다릅니다. 객체

use Moose; 
use Bread::Board; 


has info => (is => 'ro', lazy => 1, isa => 'Str', default => sub { 'something' }); 
extends 'Bread::Board::Container'; 

sub BUILD { 
    my $self = shift; 
    container $self => as { 
     service info => $self->info; 

     service A => (
      class => 'A', 
      dependencies => { 
       info => depends_on('info'), 
      }, 
     ); 
     service B => (
      class => 'B', 
      dependencies => { 
       foo => depends_on('foo'), # foo could be gotten by 
      },       # ->resolve(service => 'A')->foo 
     );        # e.g foo is an accessor on A 
    }; 
} 

내가 추가 할 수있는 코드 또는이 작업을 만들어야하는지 잘 모르겠다.

답변

0

지금까지 발견 한 가장 좋은 방법은 그냥 접근

use Moose; 
use Bread::Board; 


has info => (is => 'ro', lazy => 1, isa => 'Str', default => sub { 'something' }); 
extends 'Bread::Board::Container'; 

sub BUILD { 
    my $self = shift; 
    container $self => as { 
     service info => $self->info; 

     service A => (
      class => 'A', 
      dependencies => { 
       info => depends_on('info'), 
      }, 
     ); 
     service B => (
      class => 'B', 
      dependencies => { 
       foo => depends_on('foo'), # foo could be gotten by 
      },       # ->resolve(service => 'A')->foo 
     );        # e.g foo is an accessor on A 

# ADD SERVICE 
     service foo => (
      block => sub { 
       my $s = shift; 
       return $s->param('A')->foo; 
      }, 
      dependencies => [ 'A' ], 
     ); 
    }; 
} 

에 대한 블록을 사용하여 다른 서비스를 추가하는 것입니다 모두 A가 접근 foo는이 있다고 가정합니다 물론이

관련 문제