程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> 關於$this使用基礎教程

關於$this使用基礎教程

編輯:PHP基礎知識
 

this是指向當前對象的指針(可以看成C裡面的指針,如果類不實例化,$this則不起作用,輸出將會出錯),self是指向當前類的指針,parent是指向父類的指針。我們這裡頻繁使用指針來描述,是因為沒有更好的語言來表達。
下面我們就根據實際的例子結合來講講。
<?php
class name //建立了一個名為name的類
{
private $name; //定義屬性,私有
//定義構造函數,用於初始化賦值
function __construct( $name )
{
$this->name = $name; //這裡已經使用了this指針語句①
}
//析構函數
function __destruct(){}
//打印用戶名成員函數
function printname()
{
print( $this->name ); //再次使用了this指針語句②,也可以使用echo輸出
}
}
$obj1 = new name( "PBPHome" ); //實例化對象 語句③
//執行打印
$obj1->printname(); //輸出: PBPHome
echo "<br>"; //輸出:回車
//第二次實例化對象
$obj2 = new name( "PHP" );
//執行打印
$obj2->printname(); //輸出:PHP
name::__construct(); //報錯,因為沒有實例化對象,只是靜態調用,$this將找不到對象輸出。
?>
說明:上面的類分別在 語句①和語句②使用了this指針,那麼當時this是指向誰呢?其實this是在實例化的時候來確定指向誰,比如第一次實例化對象的時候(語句③),那麼當時this就是指向$obj1對象,那麼執行語句②的打印時就把 print( $this-><name ) 變成了 print( $obj1t->name ),那麼當然就輸出了"PBPHome"。第二個實例的時候,print( $this->name )變成了print( $obj2->name ),於是就輸出了"PHP"。所以說,this就是指向當前對象實例的指針,不指向任何其他對象或類。
但是要訪問類的靜態屬性或者在靜態方法(靜態用static聲明)裡面卻不能使用$this,而是使用self::$property。
例子:
class myclass{
public static $me = 1;
function __construct(){
echo $this->me;
}
}
$newarr = new myclass(); //輸出:Undefined property: myclass::$me
將echo $this->me改為 echo self::$me;就可以了!

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved