PHP static 和 self的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP static 和 self的区别相关的知识,希望对你有一定的参考价值。

php是世界上最好的语言

php从面向过程走到现在成熟的面向对象体系, 在php面向对象中,静态变量的调用我们可以用这两个self::method和 static::method, 但是很多童鞋迷惑,不理解self::method和static::method有什么区别,下面给出两个例子一看究竟:

例子1:

 1 class Car {
 2     public static function model()
 3     {
 4         self::getModel();
 5     }
 6     protected static function getModel()
 7     {
 8         echo "This is a car model";
 9     }
10 }
11 Car::model(); //This is a car model
12 echo ‘<br />‘;
13 Class Taxi extends Car {
14     protected static function getModel()
15     {
16         echo "This is a Taxi model";
17     }
18 }
19 Taxi::model(); //This is a car model

总结: self::getModel()调用方法getModel(), 子类的方法getModel()实际意义上没有重载父类的方法getModel().

例子2:

 

 1 class Car {
 2     public static function model()
 3     {
 4         static::getModel();
 5     }
 6     protected static function getModel()
 7     {
 8         echo "This is a car model";
 9     }
10 }
11 Car::model();  //This is a car model
12 echo ‘<br />‘;
13 Class Taxi extends Car {
14     protected static function getModel()
15     {
16         echo "This is a Taxi model";
17     }
18 }
19 Taxi::model(); //This is a Taxi model

 

总结: self::getModel()调用方法getModel(), 子类的方法getModel()重载了父类的方法getModel().

童鞋们,理解了吗?

如有疑惑,欢迎评论

 


以上是关于PHP static 和 self的区别的主要内容,如果未能解决你的问题,请参考以下文章

PHP static 关键字和 self 关键字实例化的区别

php 小知识随手记 new self() 和new static()作用和区别

PHP static 和 self的区别

PHP中new self()和new static()的区别探究

PHP $this,self,static 的区别

PHP 中的 self::$bar 和 static::$bar 有啥区别?