在这种情况下,'动态声明的字段'是什么意思?

时间:2015-03-11 17:44:20

标签: php oop phpstorm

我对OOP和PHP都很陌生。我正在使用IDE PhpStorm并在我对$width的引用时给出了这个(见下文)警告。

Warning 'Field declared dynamically'

这是我的代码:

<?php
class box {
    private $width;

    function __construct(){
        $this->width = 3;
    }
}
?>

我以前从未见过“字段”一词,我不完全确定“动态声明字段”的含义是什么意思。

在我更新PhpStorm之后,今天似乎出现了这个警告。我做错什么了吗?

此外,如果有人能够通过“注意:不对类型为”stdClass“或派生的对象执行检查来简要说明警告的含义吗?

1 个答案:

答案 0 :(得分:11)

文件|使高速缓存无效... 并重新启动IDE - 更新后您的索引似乎已损坏/已过期。


  

我并不完全确定句子&#34; Field动态声明的内容&#34;手段。

这意味着未明确声明字段/属性,但依赖__get()__set()魔术方法使其正常工作。

在您的情况下,您确实已正确声明了字段(private $width;部分) - 它只是IDE的一个小故障,经常在IDE更新后发生。


  

此外,如果有人能够通过&#34;简单地解释警告意味着什么;注意:不对类型&#34; stdClass&#34;的对象执行检查。或派生&#34;?

这意味着:如果对象是stdClass的实例或扩展此类,则不执行此检查。

这是因为stdClass的性质 - 它可以接受对任何字段的调用(甚至是未定义的 - 它会在运行时默默地为你定义)并且不会抛出通常的类所在的错误案例。