2011-08-20 3 views
1

PHP 클래스의 확장을 단독으로로드하려고합니다. 왜로드되지 않는지 나는 이해할 수 없다. 클래스 확장을로드 할 수 있습니까?부모 클래스 내부에서 클래스 확장로드 PHP

다음은 정확한 의미의 코드 예제입니다.

class Class_B{ 
    public function hi(){ 
      echo('Hello world!'); 
    }  
} 

class Class_D extends parent{ 
    public function Class_D(){ 
      //--> Here is the problematic line 
      $this->class_b->hi(); 
    }  
} 

class parent{ 
    public $class_b; 

    public function __construct(){ 
      $this->class_b = new Class_B; 
      new Class_D(); 
    } 
} 

이 코드는이 오류와 함께 제공됩니다. 라인 /path/to/your/application/test.php의 비 객체의 멤버 함수 (HI)에

통화 59

I는 Class_B 호출해야

: : hi() 함수는 같은 구문을 사용합니다. 나는 많은 것을 읽었지 만, 내가 필요한 것을 찾지 못했습니다. CodeIgniter에서는 이와 같이 여러 라이브러리가 호출됩니다. 내 프로그램에서 비슷한 것을 얻고 싶었다. 감사합니다. .

+1

정확히 * 문제 *이 함께 무엇 :

나는 무엇을 당신이하려는 것은 생각하십니까? 오류가 있습니까? 자식과 부모 클래스 사이에 순환 종속성을 만드는 것은 좋은 생각이 아닙니다. – deceze

답변

4

당신은 확실히 부모 생성자 내에서 new Class_D()를 호출하지 않습니다.

class parent { 
    protected $b; 

    public function __construct() { 
      $this->b = new Class_B(); 
    } 
} 

class Class_D extends parent { 
    function __construct() { 
     parent::__construct(); 

     $this->b->hi(); 
    } 
} 
+0

고마워요. 그것은 완벽하게 작동합니다. 부모 생성자를 호출하는 것을 잊은 것처럼 보입니다. –

1

hi() 정적을 확인 :

class Class_B{ 

    public static function hi(){ 
      echo('Hello world!'); 
    } 

} 

Class_B::hi(); 
관련 문제