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().
童鞋们,理解了吗?
如有疑惑,欢迎评论
请支持原创!转载时,请注明来源;
链接地址:https://www.cnblogs.com/cleverstone