• php中的后期静态绑定


    后期静态绑定PHP手册

    使用的保留关键字:

    static

    定义:

    static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用

    self与static的区别:

    self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类(即static作用于当前调用的类)

    示例一(在静态环境下)

    <?php
    class A {
        public static function who() {
            echo __CLASS__;
        }
        public static function test() {
            static::who(); // 后期静态绑定从这里开始
        }
    }
    
    class B extends A {
        public static function who() {
            echo __CLASS__;
        }
    }
    
    B::test();
    ?>
    输出结果是"B"
    
     class IoC
        {
            protected static $registry = [];
        
            public static function bind($name, Callable $resolver)
            {
                static::$registry[$name] = $resolver;
            }
        
            public static function make($name)
            {
                if (isset(static::$registry[$name])) {
                    $resolver = static::$registry[$name];
                    return $resolver();
                }
                throw new Exception('Alias does not exist in the IoC registry.');
            }
        }
        
        IoC::bind('bim', function () {
            return new Bim();
        });
        IoC::bind('bar', function () {
            return new Bar(IoC::make('bim'));
        });
        IoC::bind('foo', function () {
            return new Foo(IoC::make('bar'));
        });
        
        
        // 从容器中取得Foo
        $foo = IoC::make('foo');
        $foo->doSomething(); // Bim::doSomething|Bar::doSomething|Foo::doSomething
    
  • 相关阅读:
    poj 3070(矩阵快速幂入门)
    算阶乘质因数的个数(CodeForces 546D)
    hdu1237(表达式求值)
    分治法—hdu1007
    hdu-2089+初学数位dp!
    hdu-2089+初学数位dp
    线段树入门(更新单个节点)
    CodeForces 1131B(思维题)
    CodeForces 1040B(思维题)
    文献的查找下载与阅读
  • 原文地址:https://www.cnblogs.com/mingaixin/p/6274072.html
Copyright © 2020-2023  润新知