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中字段的可见性。
答案 0 :(得分:3)
这是PhpStorm 2017.2中的一个问题 - 希望(应该)在2017.2.1决赛中得到修复。
https://youtrack.jetbrains.com/issue/WI-36285 - 观看此机票(星级/投票/评论)以获得有关任何进展的通知。
现在你可能只是禁用那个特定的检查,如果这太困扰你了:
或者只是在通常的Settings/Preferences | Editor | Inspections
屏幕中找到它。
P.S。提供正确的PHP代码而不会错过关键字和其他基本错误马上也有很多帮助。使用您的原始代码(甚至是您问题中的那个代码),您无法轻易判断您是否是PHP的新手并且根本不知道您正在做什么......或者它确实是IDE的问题。
答案 1 :(得分:0)
你应该扩展A类:
class A {
public $myField = "A";
}
class B extends A {
public function __construct() {
$this->myField = "B";
}
}