我希望我使用了正确的术语,如果没有,请发表评论,我会更正。
#1:工作
在类声明之前实例化
$x = new Abc;
class Abc {
// code
}
#2:不起作用
在子类声明之前实例化(子类在父类之前声明)
$x = new Xyz
class Xyz extends Abc {
// code
}
class Abc {
// code
}
#3:工作
在子类声明之前实例化(子类声明在父类之后)
$x = new Xyz
class Abc {
// code
}
class Xyz extends Abc {
// code
}
#4:工作
在子类声明之后实例化(子类在父类之前声明)
class Xyz extends Abc {
// code
}
$x = new Xyz
class Abc {
// code
}
编辑
以下引用来自@artsylar 下面的回答。我不知道我的共享主机是否启用了自动加载,但对于我列出的示例,我无法理解该引用。
笔记:
除非使用自动加载,否则必须在使用类之前定义类。如果一个类扩展了另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。