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
    
  • 相关阅读:
    Tampermonkey 油猴脚本开发 入门
    k8s 上安装 lamp 环境
    centOS 7.9 k8s 安装 和 基本命令
    力扣59-螺旋矩阵 II
    力扣54-螺旋矩阵
    力扣705-设计哈希集合
    力扣706-设计哈希映射
    scrapy参数-COOKIES_ENABLED
    优雅降级、渐进增强
    e-cahr的地图组件封装(浙江省为例)
  • 原文地址:https://www.cnblogs.com/mingaixin/p/6274072.html
Copyright © 2011-2022 走看看