タイトル: アプリケーション名の変更
| この記事の要点 |
|---|
|
Laravelのアプリケーション名(namespace やコンフィグ上の名前)を変更する方法を説明します。Laravelのバージョンで方法が異なるため、現行プロジェクトのバージョンに合わせて選んでください。
Laravel 5.6 以前: artisan app:name コマンド
古いLaravel(5.6以前)では、ルートディレクトリで以下のコマンドを実行するとアプリのnamespace(既定は App)を一括変更できます。
| $ php artisan app:name 変更後アプリ名 |
例: php artisan app:name MyShop を実行すると、composer.json の autoload psr-4、app/Console/Kernel.php 等の namespace が MyShop\ に書き換わります。
Laravel 5.7 以降: コンフィグ/.env で変更
Laravel 5.7 以降、app:name コマンドは削除されました。表示名(メール文や認証メッセージで使われる「アプリ名」)を変えたい場合は config/app.php または .env を変更します。
|
# .env |
config/app.php 内で env('APP_NAME', 'Laravel') が参照しているため、.env を変更してキャッシュをクリアすれば反映されます。
|
$ php artisan config:clear |
namespace を変更したい(5.7以降)
5.7以降で namespace を App から別の名前に変えたい場合、自動コマンドは無いため手動置換になります。
composer.jsonのautoload psr-4セクションを書き換えるapp/配下のファイルでnamespace App;を新名へ一括置換use App\...;も一括置換config/app.phpやbootstrap/app.php内の参照を更新composer dump-autoloadを実行
影響範囲が広いため、安全に行うならIDEのリファクタ機能(PhpStormの Refactor > Rename Namespace 等)を使うのが現実的です。
確認方法
|
$ php artisan tinker |
注意点
APP_NAMEは表示用の名前。namespaceとは別物- 本番では
.env変更後に必ずconfig:clearを実行する(コンフィグキャッシュが残ると反映されない) - 5.7以降で
app:nameコマンドを呼ぶと「Command not defined」となる