【发布时间】:2014-05-10 19:46:45
【问题描述】:
我的代码有问题还是我真的无法在抽象类中实现接口?我的代码不工作,PHP 抛出错误:
致命错误:未找到“Blah”类
我的代码:
interface IBlah {
public function Fun();
}
abstract class Blah implements IBlah {
public function FunCommon() {
/* CODE */
}
abstract public function Fun();
}
class Koko extends Blah {
public function Fun() {
/* CODE */
}
}
当我将代码更改为以下时,现在它可以工作了:
abstract class Blah {
public function FunGeneral() {
/* CODE */
}
abstract public function Fun();
}
我做错了吗?非常感谢。
编辑:2014-04-01
对不起@raina77ow,我太鲁莽了。你的回答是正确的,它对我帮助很大——我理解了接口 x 抽象类,你的建议将来会很有帮助(我对你的 +1 仍然存在),但我在另一台机器上试过了。今天,当我上班并采纳您的建议时,错误仍然出现。
我想为您提供更多信息。一开始,我删除了“抽象公共函数 Fun();”根据您的建议,从我的抽象类中提取。第二件事是我的接口和抽象类在一个 PHP 文件中,而 Koko 类在另一个文件中(如果我将 Koko 类移动到与接口和抽象类相同的文件中,则不会引发错误)。
我尝试打印声明的接口 - get_declared_interfaces() 和声明的类 - get_declared_classes(),并且接口 IBlah 被打印出来,但 Blah 和 Koko 都没有打印出来。
而当我将抽象类实现接口的声明仅更改为抽象类时(如上所述),Iblah 和 Blah 和 Koko 都会打印出来。
【问题讨论】:
-
我明白了,没问题。您能说明这些文件是如何包含的吗?
-
再次非常感谢您,我在这方面有点害羞。你又是对的(如果可以的话,我会再次给你+1 :-))。我的“require_once”调用位于错误的文件中。这是因为我正在修改别人的代码,而我没有意识到这一点。谢谢你,祝你有美好的一天:-)。
标签: php interface abstract-class