PHPStorm提示魔术方法访问属性无注释,求正确PhpDoc语法
解决CakePHP控制器中
$this->ItemOrders的PHPStorm提示错误 我之前在CakePHP开发时也碰到过一模一样的问题,PHPStorm对控制器里的表属性识别确实需要精准的PhpDoc注释,你试的几种写法都没命中要点,正确的写法应该是这样的:
正确的PhpDoc注释写法
在你的ItemOrdersController类的上方,添加指向对应Table类完整命名空间的@property注释:
/** * @property \App\Model\Table\ItemOrdersTable $ItemOrders */ class ItemOrdersController extends AppController { public function someAction() { $entity = $this->ItemOrders->newEntity(); // 现在PHPStorm应该不会报错了 } }
为什么之前的写法无效?
@property ItemOrders $ItemOrders:这里的ItemOrders是实体类(Entity),而$this->ItemOrders实际指向的是表操作类(Table),newEntity()是Table类的方法,所以实体类的注释自然不匹配。@property object $ItemOrders:太宽泛了,PHPStorm无法识别具体的类方法,所以还是会提示魔术方法错误。
额外优化提示
如果想要让PHPStorm对newEntity()的返回类型也有精准提示,可以再加上@method注释:
/** * @property \App\Model\Table\ItemOrdersTable $ItemOrders * @method \App\Model\Entity\ItemOrders newEntity(array $data = [], array $options = []) */
另外,写完注释后如果PHPStorm还是没识别,建议重启IDE并清理缓存(File -> Invalidate Caches... -> Invalidate and Restart),有时候缓存会导致识别延迟。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

