为PhpStorm添加Laravel 代码智能提示功能

时间:2022-07-06 06:55:47
php artisan clear-compiled    //清除bootstrap/compiled.php
php artisan ide-helper:generate //为 Facades 生成注释,需要先清除bootstrap/compiled.php
php artisan ide-helper:models //为模型生成注释
php artisan ide-helper:meta //生成 .phpStorm.meta.php

一、为PHPSTORM安装Laravel Plugin插件

为PhpStorm添加Laravel 代码智能提示功能

二、应用 composer 安装 barryvdh/laravel-ide-helper和doctrine/dbal

packagist官网地址https://packagist.org/

使用如下命令安装barryvdh/laravel-ide-helper

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

使用如下命令安装doctrine/dbal「请装上它,在为模型注释字段的时候必须用到它」

composer require "doctrine/dbal: ~2.5"

三、允许应用程序在非生产环境中加载Laravel IDE Helper

在app/Providers/AppServiceProvider.php文件中的register()方法中添加下面的代码:

//允许应用程序在非生产环境中加载Laravel IDE Helper
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}

四、使用publish命令将软件包配置复制到本地配置:

php artisan vendor:publish --provider="Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider" --tag=config

修改配置文件ide-helper.php(自动为链式操作注释):

'include_fluent' => true,

五、为 Facades 生成注释

必须首先清除bootstrap/compiled.php,运行以下命令进行清除:

php artisan clear-compiled

为 Facades 生成注释:

php artisan ide-helper:generate

六、为模型生成注释

php artisan ide-helper:models

这时会出现询问:

Do you want to overwrite the existing model files? Choose no to write to _ide_helper_models.php instead? (Yes/No):  (yes/no) [no]:

输入 yes 则会直接在模型文件中写入注释,否则会生成「_ide_helper_models.php」文件。建议选择 yes,这样在跟踪文件的时候不会跳转到「_ide_helper_models.php」文件,不过这么做最好对模型文件做个备份,至少在生成注释之前用 git 控制一下版本,以防万一。

提示: 为模型生成字段信息必须在数据库中存在相应的数据表,不要生成 migration 还没运行 migrate 的时候就生成注释,这样是得不到字段信息的。

七、生成 .phpStorm.meta.php

php artisan ide-helper:meta

可以生成一个PhpStorm meta 文件去支持工厂模式. 对于 Laravel, 这意味着我们可以让 PhpStorm 理解我们从 IoC 容器中解决了什么类型的对象。例如:事件将返回一个「Illuminate\Events\Dispatcher」对象,利用 meta 文件您可以调用 app('events') 并且它将自动完成 Dispatcher 的方法。

app('events')->fire();
\App::make('events')->fire(); /** @var \Illuminate\Foundation\Application $app */
$app->make('events')->fire(); // When the key is not found, it uses the argument as class name
app('App\SomeClass');

提示:如果 .phpStorm.meta.php 文件不生效的话,则可能需要重启PHPSTORM。

八、自动运行 generate

想在依赖包更新时自动更新注释,可以在 composer.json 文件中做如下配置:

在scripts标签中添加下面的代码:

"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan ide-helper:generate",
"php artisan ide-helper:meta"
]

其他操作相关文档:

https://packagist.org/packages/barryvdh/laravel-ide-helper

https://laravel-china.org/articles/10172/laravel-super-good-code-prompt-tool-laravel-ide-helper