值传递给闭合功能在PHP

值传递给闭合功能在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 :)"); 
    }); 

} 
+0

它的工作,很快:)是这些类型的函数调用?和为什么他们不同于正常功能? – Eirtaza

+0

@Eirtaza - 在这里你可以阅读更多关于它:[匿名函数](http://php.net/manual/en/functions.anonymous.php#example-165) 它与“正常”函数没有区别,他们也看不到家长范围内的变数。区别仅在于匿名闭包的用法,这就是为什么语法不同。 – shaggy

您可以通过use

Mail::raw('Hi, welcome user!', function ($message) use ($email) { 
    $message->to($email) 
     ->subject("New follower :)"); 
});