💬

Laravel10でlangディレクトリが消えたけど、既存のLaravelプロジェクトで動くか確認した

2023/02/28に公開

はじめに

Laravel9でlangディレクトリがresourcesディレクトリからrootディレクトリに変わりましたが、
Laravel10でlangディレクトリが消えることになりました。

Laravel9の時の検証と同じように古いディレクトリでも動くか再度検証してみようと思います。

環境

  • PHP v8.2.3
  • Laravel v10.1.5

検証

検証のためにLaravel9のlangディレクトリの内容をそっと持ってくる。

app
bootstrap
config
database
lang <- Laravel9の内容を持ってくる
public
resources
routes

tinkerを使って、langの内容を取得してみます。

$ php artisan tinker
Psy Shell v0.11.12 (PHP 8.2.3 — cli) by Justin Hileman
> __('auth.failed');
= "These credentials do not match our records."
> app()->langPath();
= "/var/www/html/lang"

取得できましたね。
app()->langPath()を使って、langディレクトリの場所を取得しても、正しい場所を取れていますね。

ちなみに、resourcesディレクトリの配下にlangディレクトリがある場合(Laravel8時代)については、

$ php artisan tinker
Psy Shell v0.11.12 (PHP 8.2.3 — cli) by Justin Hileman
> __('auth.failed');
= "These credentials do not match our records."
> app()->langPath();
= "/var/www/html/resources/lang"

同じように取得できていますね。

コードの確認

Laravelのコードを確認すると次のように書かれているので、langディレクトリがresourcesディレクトリ、rootディレクトリのどちらにあっても大丈夫なようになっていました。
https://github.com/laravel/framework/blob/v10.1.5/src/Illuminate/Foundation/Application.php#L352-L356

補足

新規のプロジェクトはartisanコマンドを実行すればいいとアップグレードガイドに書いてありますね。

php artisan lang:publish

を実行する。

まとめ

下位互換がある変更なので、既存のLaravelプロジェクトを10にバージョンを上げても影響はないですが、
今まであったディレクトリが急になくなるって結構衝撃的な変更だなーって思いました。

bootstrapディレクトリも別物に変わりそうだったようなので、
今後のバージョンアップでもしれっとディレクトリがなくなりそうな雰囲気だけは感じております。
(流石に10のマイナーバージョンアップでは消えないですよね?)

Discussion