Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:继续
<?php
// 后期静态绑定的作用:用于在继承范围内引用静态调用的类
// static关键字的作用 :1. 声明静态成员 2. 与调用类绑定
// 在实例化对象时,static 会根据运行时调用的类来决定实例化对象,而 self 则是根据所在位置的类来决定实例化对象。
// 当我们只想实例化子类,并且不希望后续在对子类的使用中由于父类的变化对子类产生影响时,后期静态绑定就能发挥它的作用了
// 示例一:使用self
class Dad1
{
public static $name = '老大';
public static function demo1 () {
// 使用self:: 时,当后期实例化子类时会因为父类的影响而不能取到子类中的值
// 因为self 总是与当前声明该方法的类绑定
return '我的名字是:'.self::$name;
}
}
class Work1 extends Dad1
{
public static $name = '老二';
}
class Work2 extends Dad1
{
public static $name = '老三';
}
echo Work1::demo1(),'<hr>';
echo Work2::demo1(),'<hr>';
// 示例二:使用static
class Dad2
{
public static $name = '老大';
public static function demo2 () {
// 使用static:: 时,会自动与当前方法的调用类绑定
return '我的名字是:'.static::$name;
}
}
class Work3 extends Dad2
{
public static $name = '老二';
}
class Work4 extends Dad2
{
public static $name = '老三';
}
echo Work3::demo2(),'<hr>';
echo Work4::demo2(),'<hr>';