Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从构造函数检查子类中是否存在函数?_Php_Oop - Fatal编程技术网

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

Php 从构造函数检查子类中是否存在函数?,php,oop,Php,Oop,在PHP5.2.1中是否可以这样做 abstract class Test { public function __construct() { if (function_exists('init')): $this->init(); } } 如果我尝试这样做,子类上的函数不会被调用?类似于“到底是什么?” 不管怎样,你的语法是完全错误的 public function __construct() { if (function_exi

在PHP5.2.1中是否可以这样做

abstract class Test
{
  public function __construct()
  {
     if (function_exists('init')):
        $this->init();
  }
}
如果我尝试这样做,子类上的函数不会被调用?

类似于“到底是什么?”

不管怎样,你的语法是完全错误的

  public function __construct()
  {
     if (function_exists('init')
     {
        $this->init();
     }
  }
您可以使用查看对象是否具有具有给定名称的方法。但是,这不允许您测试该方法采用的参数。由于您正在定义一个抽象类,只需将所需的方法设置为抽象方法即可

abstract class Test {
    public function __construct() {
        $this->init();
    }
    abstract protected function init();
}
注意不要多次调用
init
,子类会调用其父类的构造函数