检查构造函数是否存在子类中的函数?

时间:2010-03-31 09:32:58

标签: php oop

是否可以在PHP 5.2.1中执行类似的操作?

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

如果我试试这个,那么子类上的函数不会被调用?

2 个答案:

答案 0 :(得分:1)

您可以使用method_exists查看对象是否具有给定名称的方法。但是,这不允许您测试该方法采用的参数。由于您要定义一个抽象类,只需将所需方法设为抽象方法即可。

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

请注意,不要多次调用init,子类会调用父项的构造函数。

答案 1 :(得分:0)

“类似于”究竟是什么?

无论如何,你的语法是完全错误的......

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