Laravel Tinkerで特定のメソッドを実行する
Laravel Tinker
は、アプリケーション内で特定のメソッドを簡単に実行できる便利なツールだ。インスタンス化してメソッドを呼び出す方法や、引数を変数、連想配列、多次元配列で定義する方法を紹介する。
Tinkerの起動
プロジェクトのディレクトリに移動して、以下のコマンドでtinker
を起動する。
php artisan tinker
クラスのインスタンス化とメソッド実行
クラスをインスタンス化し、メソッドを実行することで、データベース操作やロジックを試せる。
// クラスのインスタンスを作成
$user = new App\Models\User();
// インスタンスメソッドを引数付きで実行
$user->calculateDiscount(100, 'VIP');
引数を変数や配列で定義してメソッドを実行
1. 変数を使って引数を渡す
// 変数で引数を定義
$amount = 150;
$category = 'Gold';
// メソッドを実行
$user->applyDiscount($amount, $category);
2. 配列を使って複数の引数を渡す
// 配列で引数を定義
$args = ['SUMMER2024', 30, 'VIP'];
// スプレッド演算子を使用してメソッドを実行
$user->applyCoupon(...$args);
連想配列を渡す場合
メソッドが連想配列(キーと値のペア)を引数として受け取る場合、連想配列を定義して渡すことができる。
// 連想配列で引数を定義
$data = [
'code' => 'WELCOME2024',
'discount' => 20,
'user_type' => 'Premium'
];
// メソッドを実行
$user->applyPromotion($data);
-
$data
: キーと値のペアで構成される連想配列。
多次元配列を渡す場合
多次元配列を渡す場合も、配列を定義してメソッドに渡すことが可能だ。
// 多次元配列で引数を定義
$complexData = [
'user' => [
'id' => 1,
'name' => 'John Doe'
],
'orders' => [
['order_id' => 101, 'amount' => 50],
['order_id' => 102, 'amount' => 75]
]
];
// メソッドを実行
$user->processOrder($complexData);
-
$complexData
: 多次元配列で構成され、ネストされたデータをメソッドに渡す例。
静的メソッドの実行
静的メソッドは、インスタンス化せずにそのまま呼び出せる。
// 静的メソッドの実行
App\Services\DiscountService::calculateTotal(200, 15);
-
calculateTotal(200, 15)
:DiscountService
クラスの静的メソッドを引数付きで実行する。
リターン値の確認
Tinkerでは、メソッドのリターン値をその場で簡単に確認できる。
$points = $user->getRewardPoints(5);
$points;
-
getRewardPoints(5)
: 引数5
を渡してリワードポイントを取得するメソッドを実行する。
Tinkerを終了する
tinker
を終了するには、exit
やquit
を入力するか、Ctrl + D
を押す。
exit
まとめ
- インスタンス化: クラスのインスタンスを作成してメソッドを呼び出す方法。
- 配列の活用: 変数、連想配列、多次元配列を使って柔軟に引数を定義し、メソッドに渡せる。
- スプレッド演算子: 配列を展開してメソッドに渡す場合に使用する。