控制器中的变量然后功能

时间:2016-01-30 22:32:43

标签: php

由于某些原因,我的变量没有传递给我的短信功能?

public function visitor_signin(Request $request)
{
    $data = $request->first_name;
    $mobile = $request->mobile;

    SMS::send('text::invite', ['data' => $data], function($sms) {
        $sms->to($mobile);
    });
}

我收到错误:未定义的变量:mobile

2 个答案:

答案 0 :(得分:1)

函数中的scope变量是函数体。您作为回调方法$mobile传递的匿名函数中没有名为SMS::send()的变量或参数。

您可以使用use语言构造使匿名函数了解$mobile变量(在不同范围内定义):

public function visitor_signin(Request $request)
{
    $data = $request->first_name;
    $mobile = $request->mobile;

    SMS::send(
        'text::invite',
        ['data' => $data],
        function($sms) use ($mobile) {
            $sms->to($mobile);
        }
    );
}

答案 1 :(得分:0)

只需将变量传递到您的匿名函数中,如下所示:

public function visitor_signin(Request $request)
{

    $data = $request->first_name;
    $mobile = $request->mobile;

    SMS::send('text::invite', ['data' => $data], function($sms) use($mobile) {
        $sms->to($mobile);
    });

}