Бывает, необходимо быстро протестировать какой-то метод контроллера, который не имеет точки доступа (endpoints) в роутинге.
Например, у нас в контроллере PostController есть метод, привязывающий пост блога к юзеру:
public function attachUserToPost(User $user, Post $post) {
$post->users()->attach($user->id);
$post->fresh();
return $post;
}
И он вызывается где-то в другом методе, где ему передаются параметры. POST запрос нам некуда послать, а проверить работоспособность конкретного метода или передать какие-то определенные параметры нужно.
В Laravel существует замечательный инструмент tinker:
php artisan tinker
Он позволяет построчно выполнять команды php (правильно называется repl)
В нем мы можем обращаться к моделям Laravel:
$user = App\User::find(1);
Мы можем создать экземпляр контроллера и передать в произвольный метод необходимые параметры
>>> это пользовательский ввод
=> это ответ Laravel
Psy Shell v0.9.9 (PHP 7.2.0RC4 — cli) by Justin Hileman
>>> $user = App\User::find(1);
=> App\User {#2976
id: 1,
name: "Dr. Lelia Bailey DDS",
is_admin: 0,
email: "ymayert@example.org",
}
>>> $post = App\Post::find(5);
=> App\Post {#2974
id: 5,
title: "test",
}
>>> $controller = app()->make('App\Http\Controllers\PostController');
=> App\Http\Controllers\PostController {#2979
+user: null,
}
>>> app()->call([$controller, 'attachUserToPost'], [$user, $post]);