【问题标题】:PHP error with variable in callback function回调函数中带有变量的PHP错误
【发布时间】:2014-08-05 01:49:25
【问题描述】:

我在 php (laravel) 中有这个功能:

    public static function isUserParticipatesInTournament($tourId, $userId)
    {
        var_dump($userId); //dumped
        $user = User::find($userId);

        if(!$user)
        {
            return null;
        }

        $obj = $user->whereHas('tournaments', function($query)
        {
            var_dump($tourId); //error
            $query->where('id', '=', $tourId); //error
        })->get();

        return $obj;
    }

问题是在闭包$obj = $user->whereHas('tournaments', function($query){...}$tourId 变量是未定义的。我收到此错误: Undefined variable: userId.

为什么会这样?该变量是在内部函数的范围内声明的。我唯一的想法是,它是一个回调函数。

当我试图执行这个函数时:$obj = $user->whereHas('tournaments', function($query, $tourId){...} 然后我得到这个异常:

Missing argument 2 for User::{closure}()

【问题讨论】:

    标签: php laravel scope


    【解决方案1】:

    您的 $tourId 变量不在您的匿名函数的范围内。查看use 关键字,了解如何将其添加到范围。参见本页示例 3:http://www.php.net//manual/en/functions.anonymous.php

    它应该如下所示:

    $obj = $user->whereHas('tournaments', function($query) use($tourId)
        {
            var_dump($tourId); // Dumps OK
        })->get();
    

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多