zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    Bootstrap-select 动态绑定值
    Centos 下载
    设置图片大小和旋转
    aolication全局传递参数
    Activity静态变量传递参数
    Activity传递参数
    Activity横屏后声明周期的变化
    Intent隐式意图
    Intent显示意图的四种跳转
    SharedPreferences简单的应用
  • 原文地址:https://www.cnblogs.com/mingaixin/p/6274072.html
Copyright © 2011-2022 走看看