首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  PHP

Laravel 的 Facade 的这个函数有点没看明白

  •  
  •   JJstyle · 30 天前 · 1815 次点击

    贴代码:

        public static function __callStatic($method, $args)
        {
            $instance = static::getFacadeRoot();
    
            if (! $instance) {
                throw new RuntimeException('A facade root has not been set.');
            }
    
            switch (count($args)) {
                case 0:
                    return $instance->$method();
                case 1:
                    return $instance->$method($args[0]);
                case 2:
                    return $instance->$method($args[0], $args[1]);
                case 3:
                    return $instance->$method($args[0], $args[1], $args[2]);
                case 4:
                    return $instance->$method($args[0], $args[1], $args[2], $args[3]);
                default:
                    return call_user_func_array([$instance, $method], $args);
            }
        }
    

    直接 return call_user_func_array([$instance, $method], $args); 不好吗?难道判断一下参数数量,速度快一点?

    PS:我记得我以前一个同事也是这么写的,真是深得 Laravel 精髓😅,后悔没追着问为什么这么做

    10 回复  |  直到 2019-11-12 21:02:36 +08:00
        1
    Rekkles   30 天前
    版本多少? 现在是 return $instance->$method(...$args); 一个完事啊
        2
    des   30 天前
    快不快,快多少测一下就知道了啊
        4
    agdhole   30 天前
    现在都 6.5 了,5.1 的源码也太老了吧
        5
    mcfog   30 天前 via Android
    就是快
        6
    mcfog   30 天前 via Android   ♥ 3
    手残发出去了,实际上你可以在很多语言的高度优化的类库里看到类似的东西
    https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L4982
    https://backbonejs.org/docs/backbone.html#section-49
    印象里 jquery 好像也有,懒得找了
        7
    niucility   30 天前
    version 5.6
    return $instance->$method(...$args);
        8
    JJstyle   30 天前 via iPhone
    @agdhole 项目有点老,没办法升级
        10
    mrgeneral   30 天前
    善用搜索: https://segmentfault.com/q/1010000012081290

    目的就是性能优化。

    类似的细节点很多,比如:PHP7 之前还可以用 isset 来判定字符串长短,性能提升明显,PHP7 之后就没必要了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1903 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 16:27 · PVG 00:27 · LAX 08:27 · JFK 11:27
    ♥ Do have faith in what you're doing.