脚本宝典收集整理的这篇文章主要介绍了在PHP中使用“this”和“self”,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
class Demo { PRivate static $name; private $age; public function __construct($name,$age) { self::$name = $name; $this->age=$age; } public function show() { echo "Name : ",self::$name,"<br/>"; //Accessing by self echo "Name : ",Demo::$name,"<br/>"; //Accessing by class name echo "Age : ",$this->age,"<br/>"; } } $demo = new Demo("Tiny",13); $demo->show();
这会产生以下输出.
Name : Tiny Name : Tiny Age : 13
前面@L_406_3@段中self :: $name和Demo :: $name有什么区别?
class PErson1 { private $name; private $address; public function __construct($name,$address) { $this->name = $name; $this->address = $address; } public function show() { echo "Name : ",$this->name,"<br/>"; echo "Address : ",$this->address,"<br/>"; //Accessing by this } } $p1=new Person1("xxx","yyy"); $p1->show(); class Person2 { private $name; private $address; public function __construct($name,$address) { self::$name = $name; self::$address = $address; } public function show() { echo "Name : ",self::$address,"<br/>"; //Accessing by self } } $p2=new Person1("xxx","yyy"); $p2->show();
在前面的两个类Person1和Person2产生如下相同的输出.
Name : xxx Address : yyy
$this->name; $this->address;
和(如在Preson2类中,show()方法)
self::$name; self::$address;
在这种背景下?
因此,在这种情况下,按名称访问主要是能够从可访问类访问任何公共静态变量的副产品.
第二个输出与第一个输出相同,因为您显然正在创建一个新的Person1对象,而不是Person2对象(请参阅:$p2 = new Person1(“xxx”,“yyy”);)
如果您要创建一个Person2对象,那么您将收到一个错误,因为您无法将值分配给尚未声明的静态变量(您在名称和地址中有对象级变量,但不是静态的).如果您将它们声明为静态,那么由于它使用静态调用,您将从修改后的show方法获得相同的输出.
如果您不确定对象(读取:实例)变量和静态变量之间的区别是什么,那么我建议您参与一些GOOGLE搜索,但基本上静态变量存在于类级别,而不是对象级别,并且可以访问来自任何类方法或指定类型的对象(例如,如果你有100个Person2实例,他们都可以访问相同的名称变量,例如),而实例变量对于单个对象本身是唯一的.
以上是脚本宝典为你收集整理的在PHP中使用“this”和“self”全部内容,希望文章能够帮你解决在PHP中使用“this”和“self”所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。