当我们在 PhpStorm 编辑器中,开发 Laravel 框架的项目时,很多类方法都不能自动补全和定位,比如 Facade 门面的方法,DB::table()、Route::get() 等。
laravel-ide-helper 工具可以解决这个问题。
首先,通过 composer 安装 laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper:2.4.3
然后,注册服务提供者。有两种注册方式:
在 config/app.php 的 providers 数组中注册服务提供者
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
在 app/Providers/AppServiceProvider.php 的 register() 方法中注册。
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
推荐使用第二种方式,因为它只会在非生产环境中加载 Laravel IDE Helper。
注意:在生成 phpDoc 之前,我们需要先清除 bootstrap/compiled.php 文件。
清除命令是:
php artisan clear-compiled
然后,执行下面的命令生成 phpDoc 文件。
php artisan ide-helper:generate
生成的 phpDoc 就是项目根目录下的 _ide_helper.php 文件,里面包含了 Laravel 门面的相关信息。
为了方便,你可以在 composer.json 文件中作如下配置:
"scripts":{
...
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan ide-helper:generate",
"php artisan ide-helper:meta"
]
},
你还可以发布配置文件,以便修改默认的实现。
php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config
生成器会尝试去识别真正的类,如果找不到,你可以在配置文件中定义。
有些类需要数据库连接,如果没有相应的数据库连接,某些门面可能无法包含进来。
你可以选择要包含的辅助函数文件,默认该选项并未开启,但是你可以通过 --helpers (-H) 选项进行覆盖。
默认已经引入了 Illuminate/Support/helpers.php ,当然你还可以在配置文件中添加自己的辅助函数文件。
关于 laravel-ide-helper 的更多功能,请参考 https://github.com/barryvdh/laravel-ide-helper