Laravel - 控制器中的 Tinker 断点

问题描述

刚接触 Lavarel。

我正在尝试在 Laravel 中调试控制器的方法,为此我使用了 Tinker(基于 Psysh)。

我在 MySuperController方法 signup 内的断点处添加了这两个版本:

extract(\Psy\Shell::debug(get_defined_vars()));
eval(\Psy\sh());

我已经运行了 PHP artisan tinker 并在控制台中完成了以下操作:

$controller = app()->make('\App\Http\Controllers\Api\V1\MySuperController');
app()->call([$controller,'signup'],["param"=>"value"]);

执行该操作时,Tinker 响应:Illuminate\Validation\ValidationException 并显示消息“给定的数据无效”。

但我从未看到代码在断点处停止。我是否错误地认为我可以使用 Tinker 逐步调试?

解决方法

此答案基于用户@lagbox 的评论。我让他们让它成为一个答案,以便我可以选择它,但已经 4 个月了,所以我自己创建了它,以便其他人可以快速看到问题已得到解答:

评论中提到的用户@lagbox:

您是否使用表单请求进行验证?如果是这样,它们会在您的控制器方法被调用之前被解析和验证

评论是正确的。 Tmethod 使用了一个自定义请求类,它从 api/application/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php 扩展而来。我在该类中添加了 eval(),它最终到达了断点