1

我希望我使用了正确的术语,如果没有,请发表评论,我会更正。


#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 下面的回答。我不知道我的共享主机是否启用了自动加载,但对于我列出的示例,我无法理解该引用。

笔记:

除非使用自动加载,否则必须在使用类之前定义类。如果一个类扩展了另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。

4

1 回答 1

3

我认为这个链接可以帮助你。http://php.net/manual/en/language.oop5.inheritance.php

笔记:

除非使用自动加载,否则必须在使用类之前定义类。如果一个类扩展了另一个类,则必须在子类结构之前声明父类。此规则适用于继承其他类和接口的类。

于 2013-01-18T00:25:26.390 回答