php中this,self,parent的区别讲解
说明:
在语句①和语句②使用了this指针,那么当时this是指向谁呢?
其实this是在实例化时来确定指向谁,比如第一次实例化对象的时候(语句③),那么当时this就是指向$obj1对象,那么执行语句②的打印时就把 print( $this-> 再来看下self的用法。 self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量。 假如使用类里面静态(一般用关键字static)的成员,必须使用self来调用。 注意,使用self来调用静态变量必须使用 :: (域运算符号),见实例。
注意: 语句①和语句②。在语句①定义了一个静态变量$firstCount,那么在语句②时使用了self调用这个值,这时调用的就是类自己定义的静态变量$frestCount。 静态变量与下面对象的实例无关,它只是跟类有关,那么调用类本身的,那么就无法使用this来引用,因为self是指向类本身,与任何对象实例无关。 然后,前面使用的this调用的是实例化的对象$obj。 最后,我们就parent的用法进行讲解。 parent是指向父类的指针,一般使用parent来调用父类的构造函数。 例子:
里面同样含有this的用法。 细节:成员属性都是public(公有属性和方法,类内部和外部的代码均可访问)的,特别是父类的,这是为了供继承类通过this来访问。 关键点在语句①: parent::__construct( "heiyeluren" ),这时使用parent来调用父类的构造函数进行对父类的初始化,这样,继承类的对象就都给赋值了name为PBPHome。我们可以测试下,再实例化一个对象$personObject1,执行打印后name仍然是PBPHome。 总结: this是指向对象实例的一个指针,在实例化的时确定指向; self是对类本身的一个引用,一般用来指向类中的静态变量; parent是对父类的引用,一般使用parent来调用父类的构造函数。 有了以上的理论与实例相结合的介绍,你是不是已经对这三个关键词this,self,parent的理解,已经很深入了。 程序员之家,祝大家学习进步。 |
推荐阅读
-
浅析PHP中strlen和mb_strlen的区别
-
js中null与空字符串""的区别讲解
-
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
-
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
-
php中OR与|| AND与&&的区别总结
-
Python中extend和append的区别讲解
-
php进行支付宝开发中return_url和notify_url的区别分析
-
php中 continue break exit return 的区别
-
PHP编程过程中需要了解的this,self,parent的区别
-
深入浅析php中sprintf与printf函数的用法及区别