MENU

使用 Laravel IDE helper + Laravel plugin 提升开发效率

June 3, 2020 • Read: 139 • Laravel阅读设置

介绍

使用 Laravel 时,我们常常会用到拓展包 Laravel IDE helper 来帮助本地开发。而 Laravel plugin 是一款 PHPStorm 的插件,将这两者配合使用,可以较大的提升开发效率。

安装

安装 larave-ide-helper

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

安装 doctrine/dbal

composer require doctrine/dbal --dev

在 「config/app.php」的 「providers」数组中加入(如果你的 Laravel 版本小于 5.5 「如果没记错」的话,请注册服务提供者,否则请忽略)

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class

如果你只在开发环境中安装「larave-ide-helper」,那么可以在「app/Providers/AppServiceProvider.php」的「register」方法中写入下面代码:

public function register()
{
    if ($this->app->environment() !== 'production') {
        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    // ...
}

导出配置文件(如果默认配置就满足需求了,也可以忽略这一步)

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

为 Laravel 的 Facades 生成注释

注:如果存在文件 「bootstrap/compiled.php」 需要先删除, 可以在生成文当前运行 php artisan clear-compiled。

php artisan clear-compiled
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 的时候就生成注释,这样是得不到字段信息的。

自动为链式操作注释

这是什么意思呢?举个例子,在 migration 文件中经常可以看见这样的代码:

$table->string('email')->unique();

这时候就算调用过了 php artisan ide-helper:generate,在调用像 ->unique() 这样的链式操作的时候也无法实现代码提示,这时候需要将配置文件「如果导出的话」'include_fluent' => false 修改为 'include_fluent' => true,重新运行 php artisan ide-helper:generate。试试效果吧!

生成 .phpStorm.meta.php

可以生成一个 PhpStorm meta 文件去支持工厂模式。对于 Laravel, 这意味着我们可以让 PhpStorm 理解我们从 IoC 容器中解决了什么类型的对象。例如:事件将返回一个「IlluminateEventsDispatcher」对象,利用 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 使 .phpStorm.meta.php 文件生效。

自动运行 generate

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

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

提示:如果只在 dev 环境下部署 ide helper 还是不要这么做了,防止在生产环境中报错导致不必要的麻烦。

由于扩展会生成相应的文件,可能只针对当前开发者有用,所以需要添加到.gitignore中

.idea
_ide_helper.php
_ide_helper_models.php
.phpstorm.meta.php

原文链接

安装Laravel plugin

PHPStorm 中打开 Settings -> Plugins -> Marketplace,找到 Laravel 插件并安装:

uKWzGhF5Ne.png

安装后启用该插件:

WoXbKW96B0.png

之后还需要对当前的项目使用该插件(注意每一个项目都需要单独启用该设置):

8JGZ9nyZFp.png

最后需要重启编辑器。

原文链接