LoginSignup
1
0

More than 1 year has passed since last update.

【コピペでOK】Tinker立ち上げる度にModelとかClassの名前空間を毎回useするのが面倒くさいのでなんとかしたい。

Posted at

はじめに

  • (ほぼ)自動でエイリアスをつけてくれるファイルを作成しました
  • 私の環境では 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\\'],

弊社ダイアログではエンジニアを募集しております。
カジュアル面談など随時行っていますので、ちょっとでも気になった方はご連絡ください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0