后期静态绑定
1.传统绑定(self和当前类绑定)
<?php
class User1 extends User
{
public static $name = '小龙虾';
public static $money = '38元/斤';
public static function Demo()
{
return self::$name . '现在促销中只需' . self::$money;
}
}
class User2 extends User
{
public static $name = '帝王蟹';
public static $money = '108元/斤';
public static function Demo()
{
return self::$name . '现在促销中只需' . self::$money;
}
}
echo User::Demo(), '<hr>';
echo User2::Demo();
2.查看把方法放入父类中在子类调用中self和谁绑定
<?php
abstract class User
{
public static $name = '鲍鱼';
public static $money = '78元/斤';
public static function Demo()
{
return self::$name . '现在促销中只需' . self::$money;
}
}
class User1 extends User
{
public static $name = '小龙虾';
public static $money = '38元/斤';
}
class User2 extends User
{
public static $name = '帝王蟹';
public static $money = '108元/斤';
}
echo User::Demo(), '<hr>';
echo User2::Demo();
- 由此看出self::总是与声明该方法的类(User)绑定,不与调用类(User1,User2)绑定
3.后期静态绑定(使得声明和调用分开,可以自动与调用类进行绑定)
<?php
abstract class User
{
public static $name = '鲍鱼';
public static $money = '78元/斤';
public static function Demo()
{
return static::$name . '现在促销中只需' . static::$money;
}
}
class User1 extends User
{
public static $name = '小龙虾';
public static $money = '38元/斤';
}
class User2 extends User
{
public static $name = '帝王蟹';
public static $money = '108元/斤';
}
echo User1::Demo(), '<hr>';
echo User2::Demo();
总结
1.了解了静态绑定会解决怎样的问题