Загрузка расширений класса изнутри родительского класса PHP - PullRequest
1 голос
/ 20 августа 2011

Я пытаюсь загрузить расширение класса 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();
     }
}

Этот код содержит эту ошибку.

вызов функции-члена hi () для необъекта в /path/to/your/application/test.php на линия 59

Мне нужно вызвать функцию Class_B :: hi (), используя тот же синтаксис. Я много читал, но я не нашел то, что мне нужно. В CodeIgniter разные библиотеки называются так. Я хотел добиться чего-то похожего в моей программе. Спасибо.

Ответы [ 2 ]

4 голосов
/ 20 августа 2011

Вы определенно не хотите вызывать 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();
   }
}
1 голос
/ 20 августа 2011

Сделать hi() статическим:

class Class_B{

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

}

Class_B::hi();
...