はじめに
Laravelではエイリアスという便利な機能があります。
不要な記述を避けることができますが、実行には問題なくても、開発時にVS CodeなどのIDEで使う場合には問題があります。
今回はその問題を解決するための手順をまとめました。
Laravel Sailでの開発環境の構築方法は以下をご覧ください。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。
【紹介】個人開発
私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。
また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます。
Laravelのエイリアスとは
エイリアスの概要
Laravelプロジェクトの、以下のファイルを確認してみましょう。
config\app.php
エイリアスの定義を確認します。
ファサードクラス等が定義してあります。
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Http' => Illuminate\Support\Facades\Http::class,
'Js' => Illuminate\Support\Js::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
// 'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
エイリアスに登録しないと、useにクラスのパスを宣言する必要があります。
コントローラ内で、デバッグログを出力する処理を記述してみましょう。
<?php
namespace App\Http\Controllers;
// 使用するクラスを宣言
use Illuminate\Support\Facades\Log;
class HomeController extends Controller
{
/**
* index
*
* @return \Illuminate\View\View
*/
public function index()
{
Log::debug('ログを出力!');
return view('home');
}
}
このように、Laravelが用意しているファサードや、よく使うクラスのパスを毎回宣言するのは面倒ですよね。
use Illuminate\Support\Facades\Log;
Laravelではデフォルトでエイリアスに登録されているため、以下の宣言でも大丈夫です。
use Log;
もっと言えば、useの宣言は不要で、クラス名の前にバックスラッシュを記述するだけで使用することができます。
\Log::debug('ログを出力!');
先程のコードは以下のようになります。スッキリしました。
<?php
namespace App\Http\Controllers;
class HomeController extends Controller
{
/**
* index
*
* @return \Illuminate\View\View
*/
public function index()
{
\Log::debug('ログを出力!');
return view('home');
}
}
問題1
実行は問題なくできますが、VS Code上のコードがエラーになってしまします。
これは指定されているクラスを、IDEが捕捉できていないためです。
問題2
問題1と絡みますが、そのクラスのメソッドやプロパティを、コード補完できないことです。
また、PHPDocが確認できないため、引数や戻り値などをすぐに確認できません。
コーディングしている際に、正確に打ち込まないといけないし、別途、関数の仕様を調べないといけないのは非常に効率が悪いです。
問題3
実装に直接ジャンプできないことです。
例えば自分で作成したファサードクラスがあり、関数の実装へジャンプしたいケースがありますが、わざわざGrep検索などで探すしかありません。
laravel-ide-helperの導入
これらの問題を解決するためには、laravel-ide-helperを導入しましょう。
以下のコマンドで、Composerでインストールします。
$ sail composer require --dev barryvdh/laravel-ide-helper
composer.jsonに以下が追加されました。
"require-dev": {
"barryvdh/laravel-ide-helper": "^2.13",
...
},
以下のコマンドを実行して、ファサードの情報を自動生成しましょう。
$ sail php artisan ide-helper:generate
プロジェクト直下に以下のファイルが作成されました。作業はこれだけです。
_ide_helper.php
先程のコードを見てみましょう。クラス名にバックスラッシュを追加したコードがエラーになっていません。(useの宣言はしていない)
きちんとファサードクラスの関数のPHPDocが表示されました。
コード補完もバッチリ動作しています。
Ctrlキーを押しながら、クリックすることでジャンプもできました。
一度、_ide_helper.phpの方へジャンプします。
自動生成されたファイルですので、更に、該当の関数をCtrlキーを押しながらクリックすることで、実際の実装へジャンプすることができました。
その他
初学者へ
Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。
外部サーバーへ公開
作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。
脆弱性対策
脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。
GitHubと連携
GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。
GitHub Copilot
GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。
さいごに
エイリアスを活用しなるべく不要な記述をせず、開発効率が上がると思いますので、是非活用してみてください。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。
コメント