美文网首页
PHP中怎么理解self parent static 什么叫静态

PHP中怎么理解self parent static 什么叫静态

作者: ZSGZ_AD | 来源:发表于2019-02-26 15:05 被阅读0次

    首先看代码:

    class Demo1{
        public static $name = 'zsgz';
        public  static $salary = 3000;
        public static function show(){
            //self与demo1类静态绑定
             return self::$name;//访问本类中的静态属性self::就是当前类
           // return static::$name;//访问本类中的静态属性static::就是当前类
           
        }
    
    }
    class Demo2 extends Demo1{
        public static $sex = 'male';
        public static function display(){
            //parent::与父类进行静态绑定,self与demo2类静态绑定
            return parent::$name.'的工资是:'.parent::$salary.'性别是:'.self::$sex;
           //parent::与父类进行静态绑定,static与demo2类静态绑定
            //return parent::$name.'的工资是:'.parent::$salary.'性别是:'.static::$sex;
            
        }
    }
    echo '姓名是:'.Demo1::$name;//在外部访问类中的静态属性
    echo '<hr>';
    echo '姓名是:'.Demo1::show();//在外部访问类中的静态属性
    echo '<hr>';
    echo Demo2::display();
    echo '<hr>';
    

    上面代码的Demo1的show()和Demo2中的display()的方法return返回值输出结果都是一样的.


    image.png

    下面我们看这种情况,怎么在Demo1中访问Demo2的$sex属性呢?

    class Demo1{
        public static $name = 'zsgz';
        public  static $salary = 3000;
        public static function show(){
            return static::$sex;//访问本类中的静态属性static::就是当前类
            //static与self,parent是不一样的,它对应的类是动态设置的,有调用类决定,如果说self和parent是静态绑定到类的话,
            //static就是动态绑定到类,叫做静态延迟绑定(后期静态绑定)
            //静态绑定(self和parent)他们与类的绑定是在代码编译阶段进行,而static与类的绑定是在代码运行时才进行绑定,
            //所以叫静态延时绑定,所以叫:静态延迟绑定(与类绑定的时机不同)
        }
    
    }
    class Demo2 extends Demo1{
        public static $sex = 'male';
        public static function display(){  
            //parent::与父类进行静态绑定,static与demo2类静态绑定
            return parent::$name.'的工资是:'.parent::$salary.'性别是:'.static::$sex;
        }
    }
    echo Demo2::show();
    
    输出结果: image.png

    总结:static与self,parent是不一样的,它对应的类是动态设置的,有调用类决定,如果说self和parent是静态绑定到类的话,static就是动态绑定到类,叫做静态延迟绑定(后期静态绑定)
    静态绑定(self和parent)他们与类的绑定是在代码编译阶段进行,而static与类的绑定是在代码运行时才进行绑定,所以叫静态延时绑定,所以叫:静态延迟绑定(与类绑定的时机不同)

    学习视频:http://www.php.cn/code/15745.html

    相关文章

      网友评论

          本文标题:PHP中怎么理解self parent static 什么叫静态

          本文链接:https://www.haomeiwen.com/subject/bwmayqtx.html