PhpStorm中含特殊字符的魔术属性如何配置PHPDoc实现代码补全?
解决PhpStorm中带空格的动态属性代码补全问题
直接给你最简洁高效的解决方案:在@property标签里,用${"属性名"}的格式声明带空格的非标准属性名称,PhpStorm就能正确识别并提供代码补全了。
示例代码如下:
/** * Class ClassName * @property PropertyClass ${"my World"} */ class ClassName { public function example(){ return $this->{"my World"}->hello(); } }
为什么之前的写法无效?
你之前尝试的@property PropertyClass {"my World"}不符合PHPDoc的规范——@property的标准格式是@property [类型] $[属性名],对于包含空格这类特殊字符的属性名,必须用${"属性名"}的形式包裹,才能让IDE正确解析这个非标准标识符。
备选小技巧(若主方案因版本兼容失效)
如果遇到PhpStorm版本兼容问题导致主方案不生效,你可以在类中添加一个仅用于IDE识别的空方法,间接实现补全提示:
/** * Class ClassName * @method PropertyClass getMyWorld() 仅用于PhpStorm代码补全 */ class ClassName { public function example(){ // 通过这个方法获取属性,自动触发补全,实际运行由魔术方法处理 return $this->getMyWorld()->hello(); } // 魔术方法处理方法调用 public function __call($name, $arguments) { if ($name === 'getMyWorld') { return $this->{"my World"}; } // 其他业务逻辑... } }
不过这个方案不如主方案简洁,优先推荐第一种${"属性名"}的写法。
内容的提问来源于stack exchange,提问作者Gono
相关产品推荐
相关产品推荐

