【问题标题】:Access undefined field of a class in PHP访问PHP中类的未定义字段
【发布时间】:2012-07-10 00:41:58
【问题描述】:

我最近在阅读一些关于 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 的一个特性吗?

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

    【讨论】:

    • 将 php.ini 编辑为 error_reporting = E_ALL | E_STRICT,但它继续隐藏错误,另外,这是PHP的一个特性吗?
    • @Akash 答案中提到:一种。这是它的本性。
    • 这是一项功能。您可以通过您的需求属性动态定义。我个人觉得这很有用。 PHP 不是一个强大的典型语言。但是,有时您可能会遇到困难,例如您错过了在属性名称中拼写一个字母,而 PHP 可以毫无问题地吃掉这个。
    • @Marcodor 谢谢,发现它在某些应用程序中很有用:D
    【解决方案2】:

    有时这可能是一种优势。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多