PHPStorm 支持 Laravel Facades 的代码提示

2022-10-11 20:50:01 175 0
魁首哥

好久没用 Laravel 和 PHPStorm 了,最近开发了小项目,用的时候发现 Laravel 的 Facades 是没有代码补全提示的,原因是 Facades 是基于 静态 方法重载 __call static () 实现的。

找了个工具,可以实现 Facades 的代码补全。

代码补全

安装

生成

基本原理

代码补全

使用插件 barryvdh/laravel- IDE -helper 可以让 PHPStorm 支持 Laravel 的代码补全。插件的 GitHub 地址是: 。

使用起来很简单,过程如下:

安装

1composer require --dev barryvdh/laravel-ide-helper
 

生成

1php artisan ide-helper:generate
 

执行生成后,会在项目目录生成 _ide_helper.php 文件,表示安装生成成功。

之后在 PHPStorm 中就可以使用 Facade s 的代码补全了,效果如下图:

基本原理

在 Laravel 中 Facades 的使用 静态方法 重载实现的,Facade 基类使用了__callStatic() 魔术方法,直到对象从容器中被解析出来后,才会进行调用。由于此,所以 IDE 的代码补全工具不能解析出来此静态方法的调用。例如 DB::table()->insert() 。

插件形成了一个助手文件,将项目中的 Facades 的方法,具体实现了一份,没有实现具体功能,仅仅是实现了结构部分,例如属于哪个 Facades ,有哪些参数,返回值类型等。这样就告知了 IDE 使用那些内容补全代码!参考生成的助手文件 _ide_helper.php 的部分代码:

 1namespace Illuminate\ Support \Facades { 
 2 class DB {
 3 /**
 4 * Run an insert statement against the database.
 5 *
 6 * @param string $query
 7 * @param array $bindings
 8 * @return bool 
 9 * @static 
10 */ 
11 public static function insert($query, $bindings = array())
12 {
13 //Method inherited from \Illuminate\Database\Connection 
14 /** @ var  \Illuminate\Database\MySqlConnection $instance */
15 return $instance->insert($query, $bindings);
16 }
17 }
18}
19namespace { 
20 class DB extends \Illuminate\Support\Facades\DB {}
21}
 

上面的代码可知道,模拟了类 DB,并模拟的静态方法 insert,通过规范化的注释,得到 PHPDoc,从而实现 IDE 的代码提示功能。

收藏
分享
海报
0 条评论
175
上一篇:吃福寿螺会一定会感染管圆线虫病吗(福寿螺彻底煮熟可不可以吃) 下一篇:掩映的拼音(掩影的读音)

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码