【问题标题】:How to callback in laravel 5如何在 laravel 5 中回调
【发布时间】:2015-03-26 20:41:25
【问题描述】:

我有这段代码: 应用\助手;

class LowestLoadedServer {
    public static function getServer($video)
    {
        $pliki = $video->files()->with('server')->get();
        $aPliki = array();
        foreach($pliki as $plik)
        {
            $aPliki[] = $plik;
        }
        usort($aPliki, 'LowestLoadedServer::sortByLoadASC');
        return $aPliki[0]->server;
    }

    public static function sortByLoadASC($a, $b)
    {
        if($a->server->load > $b->server->load) return 1;
        if($a->server->load < $b->server->load) return -1;
        return 0;
    }
}

我的错误:

usort() 期望参数 2 为有效回调,未找到类 'App/Helpers/LowestLoadedServer'

【问题讨论】:

标签: laravel callback


【解决方案1】:

我有两种不同的想法..

第一个是你尝试过的,但你应该指定你的类的完整命名空间或者干脆使用self关键字:

usort($aPliki, "App\\Helpers\\LowestLoadedServer::sortByLoadASC");

usort($aPliki, "self::sortByLoadASC");

第二个是传递一个带有类和函数的数组:

usort($aPliki, ["App\\Helpers\\LowestLoadedServer", 'sortByLoadASC']);

usort($aPliki, ['self', 'sortByLoadASC']);

【讨论】:

    【解决方案2】:

    试试这个解决方案:

    class LowestLoadedServer {
    public static function getServer($video,Closure $callback)
    {
        $pliki = $video->files()->with('server')->get();
        $aPliki = array();
        foreach($pliki as $plik)
        {
            $aPliki[] = $plik;
        }
        usort($aPliki,$callback);
        return $aPliki[0]->server;
    }
    
    public static function sortByLoadASC($a, $b)
    {
        if($a->server->load > $b->server->load) return 1;
        if($a->server->load < $b->server->load) return -1;
        return 0;
    }
    }
    

    并传递您的回调函数,例如:self::sortByLoadASC 没有引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2017-10-25
      • 2015-05-02
      • 2017-08-28
      相关资源
      最近更新 更多