值传递给闭合功能在PHP
问题描述:
我的代码来发送邮件是值传递给闭合功能在PHP
public function handle(UserFollowed $event)
{
$h = new \Acme\Helpers\functions();
$email = $h->getUserEmail($event->followed);
Mail::raw('Hi, welcome user!', function ($message) {
$message->to($email)
->subject("New follower :)");
});
}
这是工作完全正常。唯一的问题是我不能在函数Mail::raw
内使用$email
变量。
你能提出一个解决方案吗?我很高兴知道这些表情叫做什么
p.s.我试过function ($message, $email)
但它不起作用。如果我在to($email)
中使用字符串而不是$ email,则它工作得很好。
在此先感谢。
答
传递额外的参数,以将闭合你尝试使用use
?
public function handle(UserFollowed $event)
{
$h = new \Acme\Helpers\functions();
$email = $h->getUserEmail($event->followed);
Mail::raw('Hi, welcome user!', function ($message) use ($email) {
$message->to($email)
->subject("New follower :)");
});
}
答
您可以通过use
Mail::raw('Hi, welcome user!', function ($message) use ($email) {
$message->to($email)
->subject("New follower :)");
});
它的工作,很快:)是这些类型的函数调用?和为什么他们不同于正常功能? – Eirtaza
@Eirtaza - 在这里你可以阅读更多关于它:[匿名函数](http://php.net/manual/en/functions.anonymous.php#example-165) 它与“正常”函数没有区别,他们也看不到家长范围内的变数。区别仅在于匿名闭包的用法,这就是为什么语法不同。 – shaggy