Laravel 超好用程式碼提示工具 Laravel IDE Helper

Jeffrey發表於2018-04-19

file

Laravel IDE Helper 是一個極其好用的程式碼提示及補全工具,可以給編寫程式碼帶來極大的便利。

Github 戳這裡

安裝

安裝 larave-ide-helper

# 如果只想在開發環境安裝請加上 --dev
composer require barryvdh/laravel-ide-helper

安裝 doctrine/dbal 「請裝上它,在為模型註釋欄位的時候必須用到它」

# 如果只想在開發環境安裝請加上 --dev
composer require "doctrine/dbal: ~2.3"

在 「config/app.php」的 「providers」陣列中加入

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class

如果你的 Laravel 版本小於 5.5 「如果沒記錯」的話,請註冊服務提供者,否則請忽略

如果你只在開發環境中安裝「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

好了,接下去可以愉快的使用了

使用

  • php artisan ide-helper:generate - 為 Facades 生成註釋
  • php artisan ide-helper:models - 為資料模型生成註釋
  • php artisan ide-helper:meta - 生成 PhpStorm Meta file

自動為 Laravel 的 Facades 生成註釋

在命令列下執行

php artisan ide-helper:generate

注: 如果存在檔案 「bootstrap/compiled.php」 需要先刪除, 可以在生成文當前執行 php artisan clear-compiled

自動為模型生成註釋

為所有模型生成註釋 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 容器中解決了什麼型別的物件。例如:事件將返回一個「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 使 .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 還是不要這麼做了,防止在生產環境中報錯導致不必要的麻煩。

結尾

整個使用大概就是這樣了,其實在 Laravel 5.5 以上版本只需要裝上 “larave-ide-helper” 和 “doctrine/dbal: ~2.3” 這兩個包,不用做什麼配置就可以愉快的玩耍了。

如發現文中錯誤,請!斧!正!

原文連結

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章