博客列表 >演示一个后期静态绑定的案例(0724)

演示一个后期静态绑定的案例(0724)

丶久而旧之丶
丶久而旧之丶原创
2020年08月19日 13:57:54450浏览

后期静态绑定

1.传统绑定(self和当前类绑定)

  1. <?php
  2. class User1 extends User
  3. {
  4. public static $name = '小龙虾';
  5. public static $money = '38元/斤';
  6. public static function Demo()
  7. {
  8. return self::$name . '现在促销中只需' . self::$money;
  9. }
  10. }
  11. class User2 extends User
  12. {
  13. public static $name = '帝王蟹';
  14. public static $money = '108元/斤';
  15. public static function Demo()
  16. {
  17. return self::$name . '现在促销中只需' . self::$money;
  18. }
  19. }
  20. echo User::Demo(), '<hr>';
  21. echo User2::Demo();

2.查看把方法放入父类中在子类调用中self和谁绑定

  1. <?php
  2. abstract class User
  3. {
  4. public static $name = '鲍鱼';
  5. public static $money = '78元/斤';
  6. public static function Demo()
  7. {
  8. return self::$name . '现在促销中只需' . self::$money;
  9. }
  10. }
  11. class User1 extends User
  12. {
  13. public static $name = '小龙虾';
  14. public static $money = '38元/斤';
  15. }
  16. class User2 extends User
  17. {
  18. public static $name = '帝王蟹';
  19. public static $money = '108元/斤';
  20. }
  21. echo User::Demo(), '<hr>';
  22. echo User2::Demo();

  • 由此看出self::总是与声明该方法的类(User)绑定,不与调用类(User1,User2)绑定

3.后期静态绑定(使得声明和调用分开,可以自动与调用类进行绑定)

  1. <?php
  2. abstract class User
  3. {
  4. public static $name = '鲍鱼';
  5. public static $money = '78元/斤';
  6. public static function Demo()
  7. {
  8. return static::$name . '现在促销中只需' . static::$money;
  9. }
  10. }
  11. class User1 extends User
  12. {
  13. public static $name = '小龙虾';
  14. public static $money = '38元/斤';
  15. }
  16. class User2 extends User
  17. {
  18. public static $name = '帝王蟹';
  19. public static $money = '108元/斤';
  20. }
  21. echo User1::Demo(), '<hr>';
  22. echo User2::Demo();

总结

1.了解了静态绑定会解决怎样的问题

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议