2 回答
TA贡献1893条经验 获得超10个赞
...您尝试在线使用的splat 运算符new $mailerClass(...$mailerClassParams)无法与像您这样的关联数组一起使用$data
我可以看到您用于可邮寄类的构造函数是public function __construct($data)这样您应该能够使用new $mailerClass($mailerClassParams)
如果您确实有一个在构造函数中具有多个参数的可邮寄类,那么public function __construct($email, $token, $name)您仍然可以将其作为 1 个数组参数传递,并检查传递的数组的内容。或使用new $mailerClass(...array_values($mailerClassParams)). 但是,请注意,如果您使用 end up using ,array_values()那么数组的顺序实际上很重要,因为这就是它将如何映射参数,以便$mailerClassParams数组的第一个条目始终是第一个参数,因此这不是推荐的方式。
function sendMailWithMailerClass($mailTo, $mailerClass, $mailerClassParams)
{
try{
// Remove ... splat operator here
Mail::to($mailTo)->send(new $mailerClass($mailerClassParams));
} catch (Exception $e) {
}
}
// make sure all your $mailClass constructors take 1 parameter
public function __construct($data)
{
$this->data = $data;
}
或者
function sendMailWithMailerClass($mailTo, $mailerClass, $mailerClassParams)
{
try{
// Remove keys of the associative array with array_values
Mail::to($mailTo)->send(new $mailerClass(...array_values($mailerClassParams)));
} catch (Exception $e) {
}
}
// make sure all constructor takes correct parameters in the correct order
public function __construct($email, $token, $name)
{
$this->data = [
'email' => $email,
'token' => $token,
'name' => $name,
];
}
- 2 回答
- 0 关注
- 188 浏览
添加回答
举报