2010-07-03 9 views
0

두 개의 별도 객체 인 메인 및 "자식"이 있습니다. 그 생성자를 통해 전체 부모를 자식에 추가하기 때문에 물리적으로 실제 자식 객체가 아닙니다.둘 이상의 객체 터널링

class core 
{ 

    public function __get($class) 
    { 
     $this->load($class); 
    } 

    public function load($class, $file = null, $lib = true) 
    { 
     if($file == null) 
      $file = $class; 

     if($lib == true) 
      include(LIBPATH.$file.PHP); 
     else 
      include(SYSPATH.$file.PHP); 

     $this->$class = new $class($this); 
    } 

} 

그리고 "아이":

class Child implements myStruct 
{ 
    public function __construct($obj) 
    { 
     $this->obj =& $obj; 
    } 
} 

내가 생각하는이 같은 추한, 아니면이 솔루션은 허용이 같이

?

답변

3

분명히 차선책입니다. 우선 :

$this->obj =& $obj; 

필요하지 않습니다. PHP 5부터 객체는 참조를 통해 사용자 공간에서 참조됩니다. 객체를 복사하면 실제로 참조를 복사하고있는 것입니다. 여기에 참조 연산자를 놓을 수 있습니다 : $this->obj = $obj.

자동 로딩 클래스는 spl_autoload입니다. 그것은 당신이하고있는 것과 동등한 것이 아닙니다. 여러분은 어떤 종류의 컨테이너를 사용하여 객체에 대한 참조 (그리고 클래스 당 하나의 객체)를 보유하고 있지만, 여러분이 원하는 것 같아요.

+0

코어 클래스가 여러 객체를로드해야하기 때문에 spl_autoload가 좋지 않다고 생각합니다. 자주 다른 폴더에 저장 –

+1

다른 폴더를 포함 된 경로에 넣거나 논리를 구현하는 사용자 정의 함수에'spl_autoload_register'를 전달할 수 있습니다. – Artefacto

관련 문제