1、前言php
php是世界上最好的语言spa
php从面向过程走到如今成熟的面向对象体系, 在php面向对象中,静态变量的调用咱们能够用这两个self::method和 static::method, 可是不少童鞋迷惑,不理解self::method和static::method有什么区别,下面给出两个例子一看究竟:code
例子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().blog
例子2 :
get
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().io
童鞋们,理解了吗?function
若有疑惑,欢迎评论class