PHP抽象类致命错误
我对抽象类有问题。目前,我使用抽象类runnable来确定我的API需要工作什么PHP抽象类致命错误,php,abstract-class,Php,Abstract Class,我对抽象类有问题。目前,我使用抽象类runnable来确定我的API需要工作什么 abstract class runnable { abstract protected function __setConfig(); abstract public function __run(api $api); public function run(api $api){ $this->__setConfig(); $this->__r
abstract class runnable {
abstract protected function __setConfig();
abstract public function __run(api $api);
public function run(api $api){
$this->__setConfig();
$this->__run($api);
}
}
我对此没有问题,但当我错过一个方法时,我得到了一个致命错误:
致命错误:类MyClass包含1个抽象方法,因此必须声明为抽象或实现其余方法(runnable::\uu setConfig)
我想知道如何在实例化MyClass之前测试runnable的条件是否满足,我已经尝试过了,但再次出现此错误
$reflectionClass = new ReflectionClass($appName);
if($reflectionClass->IsInstantiable()) {
// OK
} else {
// Cutom error
}
我怎样才能把它做好
谢谢您的帮助。您不能,一旦您将类扩展为抽象类,如果它不包含方法(甚至在初始化类之前),它将抛出一个错误 你不能用反射来做这件事,因为正如名字所说,反射只是反射 你可以尝试破解它,这应该是你想做什么的唯一方法
但最后我真的不知道为什么要这样做,为什么不把它扩展到一个普通类而不是一个抽象类?(如果你真的不在乎的话)在这种情况下,你可以创建一个类似这样的界面:
interface runnableInterface {
public function run(api $api);
public function setConfig();
}
abstract class runnableAbstract implement runnableInterface {
public function run(api $api){
$this->setConfig();
$this->run($api);
}
}
class runnable extends runnableAbstract implement runnableInterface {
public function setConfig() {
// do something here
};
public function run(api $api){
$this->setConfig();
$this->run($api);
}
}
您还可以阅读并且您正在走一条危险的道路,在您的方法前面加上
\uuu
-PHP保留以两个下划线开头的方法名称