代码补全
安装
生成
基本原理
代码补全
使用插件 barryvdh/laravel-ide-helper
可以让 PHPStorm 支持 Laravel 的代码补全。插件的 GitHub 地址是: https://github.com/barryvdh/laravel-ide-helper。
使用起来很简单,过程如下:
安装
1composer require --dev barryvdh/laravel-ide-helper
生成
1php artisan ide-helper:generate
执行生成后,会在项目目录生成 _ide_helper.php
文件,表示安装生成成功。
之后在 PHPStorm 中就可以使用 Facades 的代码补全了,效果如下图:
基本原理
在 Laravel 中 Facades 的使用静态方法重载实现的,Facade 基类使用了__callStatic() 魔术方法,直到对象从容器中被解析出来后,才会进行调用。由于此,所以 IDE 的代码补全工具不能解析出来此静态方法的调用。例如 DB::table()->insert()
。
插件形成了一个助手文件,将项目中的 Facades 的方法,具体实现了一份,没有实现具体功能,仅仅是实现了结构部分,例如属于哪个 Facades ,有哪些参数,返回值类型等。这样就告知了 IDE 使用那些内容补全代码!参考生成的助手文件 _ide_helper.php
的部分代码:
1namespace IlluminateSupportFacades {
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 IlluminateDatabaseConnection
14 /** @var IlluminateDatabaseMySqlConnection $instance */
15 return $instance->insert($query, $bindings);
16 }
17 }
18}
19namespace {
20 class DB extends IlluminateSupportFacadesDB {}
21}
上面的代码可知道,模拟了类 DB,并模拟的静态方法 insert,通过规范化的注释,得到 PHPDoc,从而实现 IDE 的代码提示功能。
欢迎微信关注:小韩说课,有很多 PHP 的资源,输入 PHP 获取PHP教程。