class A {
public $myField = "A";
}
class B extends A {
function __construct() {
$this->myField = "B"; // My IDE complains 'Field declared dynamically'
}
}
我使用 PHP 7.0.18 并最近从 PhpStorm 2016 升级到 PhpStorm 2017.2 作为我的 IDE。
自从我升级以来,IDE 抱怨说,在父类中声明的字段无法访问,因此动态声明 - 这在运行时没有任何区别,但仍然很烦人,并导致我质疑这是 PhpStorm 2017 中的错误,还是到目前为止我误解了 PHP 中字段的可见性。
这是 PhpStorm 2017.2 中的一个问题——希望(应该(在2017.2.1决赛中修复。
https://youtrack.jetbrains.com/issue/WI-36285 -- 观看此票证(加星/投票/评论(以获得有关任何进度的通知。
现在,如果该特定检查太困扰您,您可以禁用该特定检查:
- 将插入符号放在错误/警告上,
- 点击Alt + 输入,
- 找到正确的条目(通常是最上面的一个(,
- 使用向右箭头显示子菜单,然后选择"禁用检查"。
或者,只需在通常的Settings/Preferences | Editor | Inspections
屏幕中找到它。
附言提供正确的PHP代码而不会立即丢失关键字和其他基本错误也有很大帮助。使用您的原始代码(甚至是您的问题中的代码(,不可能轻易判断您是否是PHP的新手,并且根本不确切知道自己在做什么。或者如果它确实是 IDE 的问题。
你应该扩展 A 类:
class A {
public $myField = "A";
}
class B extends A {
public function __construct() {
$this->myField = "B";
}
}