返回后期静态绑定技......登陆

后期静态绑定技术

笑颜常开2019-04-10 20:58:06220

       后期静态绑定。用于在继承范围内引用静态调用的类。该功能从语言内部角度考虑被命名为”后期静态绑定“。”后期绑定“的意思是说,static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为”静态绑定“,因为它可以用于(但不限于)静态方法的调用。

<?php

class Father{

        public static $money = 50000;

 

        //静态方法

        public static function  getClass()

        {

            //返回当前的类名

            return __CLASS__;

        }

        //静态方法: 访问当前类中的其它静态成员

        public static function getMoney()

        {

             // return self::getClass().'=>'.self::$money;

            //后期静态绑定,使用static,在静态继承的上下文中,动态的与调用类绑定(动态设置静态成员的调用者(主体))

             return static::getClass().'=>'.static::$money;

        }

}

class Son extends Father {

    //覆写父类静态属性

    public static $money = 30000;

    //覆写父类中的静态方法

    public static function getClass()

    {

        return  __CLASS__;

    }

}

 echo Father::$money.'<br>';

//调用父类的静态方法,获取父类类名

 echo Father::getClass().'<br>';

//获取父类中其它静态成员的相关信息

 echo Father::getMoney().'<hr>';

 echo Son::$money.'<br>';

//子类调用父类的静态方法

//Son类覆写了Father类的getClass(),调用子类已重写的方法,返回子类名称

 echo Son::getClass().'<br>';

//因为Son类继承了Father类,所以也可以直接访问父类中的getMoney()方法

//因为没有子类Son中对getMoney()进行覆写,所以访问的还是Father类中的数据

 echo Son::getMoney().'<hr>';

//此时我再用父类调用getMoney(),static 也会自动与 Father类绑定

echo Father::getMoney();

QQ图片20190410205640.png

最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送