はじめに
- (ほぼ)自動でエイリアスをつけてくれるファイルを作成しました
- 私の環境では config/tinker.php の設定ファイルを作るやり方だとうまくいきませんでした
- Laravelのversionによってはできないかもしれません
- コードの良し悪しはご容赦ください
- 自己責任でご利用ください
バージョン
Laravel 6.18.13
手順1
- Laravelプロジェクト直下に .tinker ファイルを作ります
touch .tinker
手順2
- 以下をコピー
test.php
<?php
use Illuminate\Foundation\AliasLoader;
$targetArr = [
['dir' => 'app/Models/*.php', 'alias' => 'App\Models\\'], // 例) すべてのModelを対象とする
['dir' => 'app/Services/*.php','alias' => 'App\Services\\'], // 例) Service配下のすべてのPHPファイルを対象とする
// ['dir' => '', 'alias' => ''], // TODO エイリアスをつけたいディレクトリと、namespaceを記述
];
function setClassAlias(Array $targetArr): void
{
$loader = AliasLoader::getInstance();
foreach ($targetArr as $target) {
$targets = glob($target['dir']);
$loadClasses = [];
foreach ($targets as $data) {
$loadClasses[] = basename($data, '.php');
}
foreach ($loadClasses as $data) {
$loader->alias($data, $target['alias'] . $data);
}
}
}
setClassAlias($targetArr);
手順3
- さっき作った .tinker ファイルに貼り付ける
手順4
- $targetArr の中にエイリアスをつけたい対象のディレクトリを追加する(不要なら削除する)
- 以上で設定は完了
手順5
- Tinkerを実行します
- 作成したファイルである .tinker をつけるのをお忘れなく
php artisan tinker .tinker
おわり
指定したディレクトリについては、エイリアスが作成されます。
例えば、以下のようにuseなしでModelを入力し始めることができます。
tinker
>>> Post::first()
=> App\Models\Post {#6054
id: 1,
nm: "xxxx",
}
それでは、よきティンカーライフを!!
おまけ
日付を取得したりできる、Carbon の追加は以下です。
$targetArr に足してあげてください。
.php
['dir' => 'vendor/laravel/framework/src/Illuminate/Support/Carbon.php', 'alias' => 'Illuminate\Support\\'],
弊社ダイアログではエンジニアを募集しております。
カジュアル面談など随時行っていますので、ちょっとでも気になった方はご連絡ください!