本文實例講述了PHP創建對象的六種方式。分享給大家供大家參考,具體如下:
<?php/** * PHP創建對象的六種方式 */class Person{ private $name = 'bruce'; public function getName(){ return $this->name; } public static function getObjBySelf(){ return new self(); } //動態延遲綁定,能識別調用者 public static function getObjcByStatic(){ return new static(); }}//Person子類 Teacherclass Teacher extends Person{ public static function getObjByParent(){ return new parent(); }}//1、new 類名();創建對象$obj1 = new Person();//等價于寫法 $obj1 = new Person;echo '類名:'.get_class($obj1).'<br>';echo $obj1->getName().'<hr>';//2、將類名字符串賦值給一個變量,通過變量創建$clsName = 'Person';$obj2 = new $clsName();echo '類名:'.get_class($obj2).'<br>';echo $obj2->getName().'<hr>';//3、通過對象實例創建對象$obj3 = new $obj2();echo '類名:'.get_class($obj3).'<br>';echo $obj3->getName().'<hr>';//4、通過 new self()//$obj4 = (new $obj3())->getObjBySelf();$obj4 = Person::getObjBySelf();echo '類名:'.get_class($obj4).'<br>';echo $obj4->getName().'<hr>';//5、通過 new parent()$obj5= Teacher::getObjByParent();echo '類名:'.get_class($obj5).'<br>';echo $obj5->getName().'<hr>';//6、通過 new static();$obj6 = Person::getObjcByStatic();echo '類名:'.get_class($obj6).'<br>';//類名:Personecho $obj6->getName().'<hr>'; //bruce//當用子類去調用時候,發現static自動識別當前調用者(靜態延遲綁定),返回當前調用者對象$obj7 = Teacher::getObjcByStatic();echo '類名:'.get_class($obj7).'<br>';//類名:Teacherecho $obj7->getName().'<hr>';//bruce$obj8 = Person::getObjBySelf();echo '類名:'.get_class($obj8).'<br>';//類名:Personecho $obj8->getName().'<hr>';//new self()在子類中調用依舊返回原來父類的綁定$obj9 = Teacher::getObjBySelf();echo '類名:'.get_class($obj9).'<br>';//類名:Personecho $obj9->getName().'<hr>';運行結果:
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選