self_parent_static.php
<?php
class Demo1
{
public static $name = 'peter';
public static $salary = 3000;
public static function show()
{
//self::与Demo1类静态绑定
// return self::$name;//访问本类中的静态属性self::就是当前类
// return static::$name;//访问本类中的静态属性static::就是当前类
return static::$sex;//访问本类中的静态属性static::就是当前类
//static与self,parent是不一样的,它对应的是动态设置的,由调用类决定,
//如果说self和parent是静态绑定到类的话,static就是动态绑定到类,书上叫做:静态延迟绑定(后期静态绑定)
//静态绑定(self和parent)他们与类的绑定是在代码的编译阶段进行;而static与类的绑定是在代码的运行时才进行绑定,所以叫:静态延迟绑定(与类绑定的时机不同)
//(当代码运行到这里时)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 '性别是:'.Demo2::show();//性别是:male //在外部访问类中的静态属性
echo '<hr>';
echo Demo2::display();
-
效果图
image.png
