2

我最近在阅读一些关于 PHP 面向对象编程的文章,并遇到了这样的事情:

class a {}
$temp = new a();
$temp->newfiled = 20;    // This field is not present within the class

上面的代码在 PHP 5.3 中运行良好

为什么说 PHP 会抛出错误?我来自 Java 背景,我们只能使用在类中定义的字段。

更新:将 php.ini 编辑为 error_reporting = E_ALL | E_STRICT,但它继续隐藏错误。

另外,这是PHP的一个特性吗?

4

2 回答 2

3

简而言之:PHP 不是 Java。稍长一点:PHP 是动态类型,而 Java 是静态类型语言。但是,您可以提高错误级别。您应该会看到通知或(严格)警告。

http://php.net/language.oop5.properties

于 2012-07-10T14:02:47.237 回答
0

有时这可能是一个优势。

如果您需要确保属性已显式声明或在祖先类中声明,则可以使用property_exists函数。

于 2012-07-10T14:07:41.320 回答