Php Laravel-如何重用在函数中传递模型作为参数的函数
我想进一步了解如何利用此功能的强大功能,将模型作为已实例化并准备好使用的空对象传递 我面临的问题是可重用性,我不想写两次函数 让我们以以下函数为例: APIPhp Laravel-如何重用在函数中传递模型作为参数的函数,php,laravel,Php,Laravel,我想进一步了解如何利用此功能的强大功能,将模型作为已实例化并准备好使用的空对象传递 我面临的问题是可重用性,我不想写两次函数 让我们以以下函数为例: API Route::post('/onboarding/email-verification', 'CustomerController@verifyEmail'); 控制器 public function verifyEmail(Request $request, Customer $customer) {} 上面的函数有一个简单的用途,它
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,框架不能覆盖它。我用其他解决方案更新了我的答案,如果你愿意的话。