symfony가 dependency injection을 어떻게 사용하는지 살펴 보았습니다. 그러나 나는 그것의 직접적인 목적을 이해하지 못한다.의존성 주입 Symfony 객체 생성 매개 변수
모든 것을 서비스로 표시하는 것 같습니다. 서비스는 구성된 라우터의 라인을 따라 있습니다. 이러한 서비스의 대부분은 초기화에 필요한 일련의 기본 변수를 가지고 있습니다. 그러나 isShared라고하는 방법이 있습니다.
나는 그 메소드를 사용할 때 이미 만들어진 객체 대신에 새로운 객체를 생성한다고 생각한다.
하지만 생성 될 객체가 완전히 다른 변수를 필요로 할 때 어떻게됩니까?
class foobarClass
{
public function __construct($config.foo)
{
//
}
}
$container = new sfContainerBuilder(array('config.foo' => 'bar'));
$container->register('foobar','foobarClass')
->addArgument('%config.foo%')
->isShared(false);
config.foo 란 bar가 아니라 foo일까요? 기본적으로 가능한 모든 구성에 대해 다른 정의를 작성해야합니까 (이상하게 보이고 DIC의 목적을 무력화시키는 것)?
또한 종속성 주입과 역 제어 간의 주요 차이점은 무엇입니까? 언제 어디서 무엇에 익숙합니까?
미리 감사드립니다.
편집 : 나는 필요한 경우 새 경로를 주기로하고 어떻게
class Files
{
protected $_path;
public function __construct($path)
{
$this->_path = $path;
}
}
$container = new sfContainerBuilder(array('path.to.something' => '/some/path/file.abc'));
$container->register('files','files')
->addArgument('path.to.something')
->isShared(false);
:
매개 변수 문제에 대한 또 다른 예? 정의에는 이미 path.to.smething이 있습니다. 하지만 path.sto.somethingElse가있는 Object가 필요한 경우에는 어떻게해야합니까?
의존성 주입 제어의 반전을 할 수있는 방법에 대해 다음 페이지를 계속할 수 있습니다. 컨트롤의 반전을 수행하는 다른 많은 방법이 있습니다. 매개 변수에 관해서는 구성이 일반적으로 응용 프로그램이 실행될 때 변경되지 않는 구성 파일에서 읽혀지기 때문에 중요하지 않습니다 (SF2로 태그를 지정했기 때문에 질문이 혼란 스럽긴하지만 SF1처럼 보입니다). – mpm
제 잘못, SF2라고 생각했습니다. – John