Проверить из конструктора, если функция в дочернем классе существует? - PullRequest
0 голосов
/ 31 марта 2010

возможно ли сделать что-то подобное в PHP 5.2.1?

abstract class Test
{
  public function __construct()
  {
     if (function_exists('init')):
        $this->init();
  }
}

Если я попробую это сделать, функция в подклассе не будет вызвана?

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Вы можете использовать method_exists, чтобы увидеть, есть ли у объекта метод с заданным именем. Однако это не позволяет вам проверить, какие аргументы принимает метод. Поскольку вы определяете абстрактный класс, просто сделайте нужный метод абстрактным методом.

abstract class Test {
    public function __construct() {
        $this->init();
    }
    abstract protected function init();
}

Только будьте осторожны, вы не вызываете init более одного раза, и дочерние классы вызывают конструкторы своих родителей.

0 голосов
/ 31 марта 2010

"что-то вроде" ЧТО именно?

В любом случае, ваш синтаксис совершенно неправильный ...

  public function __construct()
  {
     if (function_exists('init')
     {
        $this->init();
     }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...