我有一个以下的php课程。
<?php
class t extends c{
function __construct() {
parent::__construct();
}
}
class c extends d{
function __construct() {
parent::__construct();
}
}
class d {
function __construct() {
echo "worked";
}
}
new t();
?>
上面的类在我的本地机器上工作正常,其中PHP版本是(PHP版本5.5.9-1ubuntu4.2)
但它不适用于php版本的云服务器(PHP版本5.4.26和linux主机) 我有另一个php版本的服务器(PHP版本5.3.28 amazone云服务器) 上面的代码也没有用。
知道为什么它不能在上面两个php版本(5.4.26和5.3.28)中工作?
答案 0 :(得分:1)
您可以在this example that you get this error中看到:
致命错误:班级&#39; c&#39;在第3行的/ tmp / execpad-0fdb5d0d9043 / source-0fdb5d0d9043中找不到
如果你改变你的类声明的顺序,以便它在逻辑(程序,我想)中定义,you get what you expect(PHP 5.4.6):
class d { /* etc */ }
class c extends d { /* etc */ }
class t extends c { /* etc */ }
new t(); // worked
请参阅PHP manual on object inheritance:
注意:除非使用自动加载,否则必须在使用之前定义类。如果类扩展另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。