PHP中this和self关键字的区分:
1、self代表类,$this代表对象
2、能用$this的处所肯定运用self,能用self的处所不肯定能用$this
3、静态的要领中不能运用$this,静态要领给类接见的。
PHP中this和self关键字的用法:
self是援用静态类的类名,而$this是援用非静态类的实例名。
static 的属性和要领,只能接见static的属性和要领,不能类接见非静态的属性和要领。
由于静态属性和要领被建立时,能够还没有任何这个类的实例能够被挪用。
static的属性,在内存中只要一份,为一切的实例共用。
运用self::
关键字接见当前类的静态成员。
一个类的一切实例,共用类中的静态属性。
也就是说,在内存中纵然有多个实例,静态的属性也只要一份。
下面例子中的设置了一个计数器$count属性,设置private 和 static 润饰。
如许,外界并不能直接接见$count属性。而顺序运转的效果我们也看到多个实例在运用同一个静态的$count 属性。
<?php class user { private static $count = 0 ; //纪录一切用户的登录状况. public function __construct() { self::$count = self::$count + 1; } public function getCount() { return self::$count; } public function __destruct() { self::$count = self::$count - 1; } } $user1 = new user(); $user2 = new user(); $user3 = new user(); echo "now here have " . $user1->getCount() . " user"; echo "<br />"; unset($user3); echo "now here have " . $user1->getCount() . " user"; ?>
静态属性直接挪用
静态属性不需要实例化就能够直接运用,在类还没有建立时就能够直接运用。
运用的体式格局是: 类名::静态属性名
<?php class Math { public static $pi = 3.14; } // 求一个半径3的园的面积。 $r = 3; echo "半径是 $r 的面积是<br />"; echo Math::$pi * $r * $r; echo "<br /><br />"; //这里我以为 3.14 不够准确,我把它设置的更准确。 Math::$pi = 3.141592653589793; echo "半径是 $r 的面积是<br />"; echo Math::$pi * $r * $r; ?>
类没有建立,静态属性就能够直接运用。
静态要领
静态要领不需要地点类被实例化就能够直接运用。
运用的体式格局是 类名::静态要领名
相相识更多相干内容请接见ki4网:PHP视频教程
以上就是php中self和this的区分与用法细致引见的细致内容,更多请关注ki4网别的相干文章!