L6以来のLTSという事で待望の(?)Laravel9がリリースされました。という事で早速installを試してみます。

バージョン

まずはサポートの予定をチェックしてみましょう。

おや?Laravel9のLTS表記が消えていますね。なぜでしょう?
Taylor OtwellさんがTwitterで説明していました。

L9はPHP8.0以上をシステム要件としていましたが、依存パッケージである Symfony6.1 がPHP8.1を要件とする可能性があり(2022/02/16現在 github上で協議中)、L9のサポート期限はその決定次第で決まるとの事です。
表の期限は最悪のシナリオを想定したもので、symfonyの最低要件がPHP8.1になった場合でも2年間はサポートされるよ、との事です。

こちらの情報はモニターしておく必要がありそうです。

※追記@2022-02-28

Symfony6.1はPHP8.1以上が必須となりました、という事でL9のサポートは2年間となりました。
また、これに合わせて次のL10ではPHP8.1以上が要件となりした。

新規プロジェクト

前項でも触れましたがL9はPHP8.0以上が必要です、まだの方は先にPHPをバージョンアップして下さい。以下のコマンドでL9xというプロジェクトを作成してみましょう。

composer create-project --prefer-dist laravel/laravel:^9.0 l9x

プロジェクトディレクトリに移動し、早速立ち上げてみましょう。

cd L9x
php artisan serve

ブラウザでhttp://127.0.0.1:8000にアクセスするとお馴染みのホーム画面が表示されました。

route:list

今回のアップデートで変わった内容の1つにroute:listが刷新された、とありました。早速試してみましょう。

php artisan route:list

以下のようなカラフルな出力になりました。

L8では以下のようなテーブル出力でした。

刷新されたエラーページ

エラーページの出力も刷新され、パッケージがfacade/ignitionからspatie/laravel-ignitionに変更されました。

試しに表示してみましょう。ルートページにアクセスした際にエラーが発生するように変更します。

...
Route::get('/', function () {
    throw new \Exception('Error on purpose');    // 追加
    return view('welcome');
});

ブラウザでhttp://127.0.0.1:8000にアクセスするとエラーページが表示されました。
ダークモードですね。

リクエストの詳細情報などはページ下部にあります。メニューバーのCONTEXTからも飛べます。
見やすいし、コピペしやすそうですね。

右上の歯車マークから、使用しているEDITORを指定する事で、エラー画面からエディタを開き該当行にジャンプできます。
facade/ignitionにも同様の機能がありましたが、デフォルトのエディタにPHPStormが指定されており、私が使用しているVS Codeに変更する場合は.envに設定を書かなければならなかったので大変便利です。

該当行のペンマークのアイコンをクリックしてエディタ上でコードの該当部分にジャンプ。

エラー調査が捗りそうです。

ddd()復活?

過去の記事で紹介したddd()ですが、L9で使うとCall to undefined function ddd()エラーが発生してしまいます。

その件について、こちらのGitHubのDiscussionでDiscussされています。

spatie/laravel-ignitionの開発メンバー側はddd()を使ってないのでパッケージをシンプルにする為に削除したとの事。

しかし、戻して欲しい、という意見が多かったので近い内に追加されるそうです。
コミュニティの意見をしっかりと聞いて反映する良いパッケージだな、という印象を受けました。

By hikaru