필자는 클래스의 외부 및 내부 인스턴스를 덮어 쓰지 않고 다시 작성할 수있는 Dependency Injection 팩토리 클래스를 작성합니다.문자열의 인스턴스 인 객체를 반환합니다.
이if($nsp instanceof $obj)
{
return $obj::getInstance();
}
그것은 항상 false를 반환 내가 지금처럼 네임 스페이스를 참조하는 개체에 instanceof
를 호출 할 때
내가 가진 문제이다. 예를 들어, \App\Com
네임 스페이스 안에 Test 개체가 있으면 여전히 false를 반환합니다. (See it working properly here)
위의 링크를 방문 할 수없는 경우 미리 인스턴스화 된 개체 배열을 보유하고있는 protected $_case
이 있습니다.
public function using($nsp)
{
foreach($this->_case as $obj)
{
if($nsp instanceof $obj)
{
return $obj::getInstance();
}
}
throw new \Exception("Call to $nsp did not match any libraries.");
}
을 그리고 다음과 같이 사용/호출 할 수 있습니다 : 다음 방법은 다음과 같습니다
Service::getInstance()->using('SomeNamespace\SomeObject');
어떤 도움을 크게 감상 할 수는 documentation이 개념을 더 깊이 설명합니다.
다운 투표? 이 질문에 투표를하는 것보다 오히려 잘못 질문하는 방법을 설명하십시오. – KDOT
'$ obj'는 클래스의 * 인스턴스 *입니다 (모든 클래스가 될 수 있습니다).'$ nsp'는'\ App \ Com \ Foo'처럼 * 네임 스페이스 *와 * 클래스 이름 *을 포함하는 문자열입니다. 기본적으로 해당 문자열을 사용하여 객체 배열을 검사하고 해당 인스턴스를 반환합니다. @deceze [무엇을 의미합니까?] (https://3v4l.org/knhjm) – KDOT