VSCode中CakePHP自定义查询器(finder)自动补全方法咨询
在VSCode中实现CakePHP自定义查询器的自动补全
可以实现自动补全,核心是通过在Table类的PHPDoc注释中声明自定义查询器对应的find方法签名,配合合适的PHP智能提示扩展即可解决问题,具体操作如下:
- 确保VSCode安装了功能完善的PHP智能提示扩展,比如
Intelephense(默认PHP扩展对魔术方法的支持有限) - 在你的Table类的类级PHPDoc注释中,使用
@method标签声明每个自定义查询器对应的find调用签名:/** * @method \Cake\ORM\Query findPublished(\Cake\ORM\Query $query, array $options) * @method \Cake\ORM\Query findFeatured(\Cake\ORM\Query $query, array $options) */ class ArticlesTable extends Table { public function findPublished(\Cake\ORM\Query $query, array $options) { return $query->where(['published' => true]); } public function findFeatured(\Cake\ORM\Query $query, array $options) { return $query->where(['featured' => true])->orderDesc('created'); } } - 配置完成后,当你在代码中调用
$this->Articles->find('')时,VSCode会自动补全published、featured等自定义查询器名称,同时还能提示返回值类型。
之前单独给查询器方法加注释无效的原因是:CakePHP的find方法是通过魔术逻辑映射到自定义查询器的,IDE无法直接识别字符串参数对应的方法,必须通过类级的@method注释明确关联find方法的参数与查询器的对应关系。
内容的提问来源于stack exchange,提问作者sknsey
相关产品推荐
相关产品推荐

