Php Laravel-如何重用在函数中传递模型作为参数的函数

Php Laravel-如何重用在函数中传递模型作为参数的函数,php,laravel,Php,Laravel,我想进一步了解如何利用此功能的强大功能,将模型作为已实例化并准备好使用的空对象传递 我面临的问题是可重用性,我不想写两次函数 让我们以以下函数为例: API Route::post('/onboarding/email-verification', 'CustomerController@verifyEmail'); 控制器 public function verifyEmail(Request $request, Customer $customer) {} 上面的函数有一个简单的用途,它

我想进一步了解如何利用此功能的强大功能,将模型作为已实例化并准备好使用的空对象传递

我面临的问题是可重用性,我不想写两次函数

让我们以以下函数为例:

API

Route::post('/onboarding/email-verification', 'CustomerController@verifyEmail');
控制器

public function verifyEmail(Request $request, Customer $customer) {}
上面的函数有一个简单的用途,它允许我使用已经从http请求接收到的
请求
实例,其中我有一个实例化的对象
$Request
,在这里我可以进一步使用

现在在同一个控制器中,我希望使用
verifyEmail()
,作为
$this->verifyEmail()
,但我不能,因为函数需要两个参数,我尝试重建函数,如下所示:

$this->verifyEmail(新请求(['email'=>$customer->email]),new customer())
-因为函数需要电子邮件。我尝试了许多其他的迭代,但即使它们成功了,它们看起来也很可怕

所以我的问题很简单,你怎么能重用一个用模型/对象构建的Laravel函数呢


谢谢

您可以使用第三个参数:

public function verifyEmail(Request $request, Customer $customer, ?string Email)
{
      if ($email) {
         // use var
      } else {
         // use request
      }
}
您只需注入请求以使用它,或使$Request参数为空:

$this->verifyEmail($request, new Customer(), 'youremail@test.com')
如果要保留2个参数,可以定义新的$request变量,如下所示:

$request = new \Illuminate\Http\Request();
$request->replace(['email' => 'email@totest.com']);

$this->verifyEmail($request, new Customer());

我很喜欢你的答案,它服务于基本的目的,尽管整个空模型参数是一个框架“东西”,但我希望看到一个框架以更优雅的结构解决这个问题,这是FW的一部分,因为我在OP中给出的示例非常基本。如果一周内没有人给出任何答案,你的答案(有效)谢谢Vincent。这里是基本的OOP Php,框架不能覆盖它。我用其他解决方案更新了我的答案,如果你愿意的话。