Laravel IDE Helper 是一個極其好用的程式碼提示及補全工具,可以給編寫程式碼帶來極大的便利。
安裝
安裝 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 協議》,轉載必須註明作者和本文連結