在这种情况下 'field declared dynamically' 是什么意思?

What does 'field declared dynamically' mean in this situation?

我对 OOP 很陌生,PHP。我正在使用 IDE PhpStorm,它在我引用 $width.

时给我这个(见下文)警告

这是我的代码:

<?php
class box {
    private $width;

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

我以前从未见过 "field" 这个词,我也不完全确定 "Field declared dynamically" 这句话是什么意思。

这个警告似乎是我今天更新 PhpStorm 后才出现的。我做错什么了吗?

此外,如果有人可以通过 "Note: Check is not performed on objects of type "stdClass" 或 derived" 简要解释警告的含义?

请执行 File | Invalidate Caches... 并重新启动 IDE -- 更新后您的索引似乎是 corrupted/out-of-date。


and I'm not entirely sure what the sentence "Field declared dynamically" means.

这意味着 field/property 没有显式声明,而是依赖于 __get()__set() 魔术方法使其工作。

在您的情况下,您确实正确声明了字段(private $width; 部分)——这只是一个 IDE 故障,在 IDE 更新到较新版本后经常发生。


Also, if anyone can briefly explain what the warning means by "Note: Check is not performed on objects of type "stdClass" or derived"?

确切的意思是:如果对象是 stdClass 的实例或扩展了 class.

则不执行此检查

这是因为 stdClass 的性质——它可以接受对任何字段的调用(即使是未定义的——它会在运行时默默地为你定义它)并且不会抛出通常的错误 classes 会在这种情况下。