国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php面向對象 $this關鍵字用法詳解

2024-09-04 11:43:35
字體:
來源:轉載
供稿:網友

本文章來給各位同學介紹在php類中我們會常用到this 關鍵字了,下面我簡單的分析一下在php面向對象 $this關鍵字用法希望此教程對各位同學會有所幫助呀。

在前面我們知道,在對象外部訪問對象成員屬性和方法,使用對象的引用來完成,而在對象內部中,成員方法訪問自己對象中的其它成員屬性或者成員方法,要使用特殊的對象引用"$this->值"的形式來訪問,成員屬于哪個對象,$this引用就代表哪個對象,并且只能在對象的成員方法中使用。

為了解決php類和對象中變量與屬性的命名沖突和不確定性問題,引入了”$this”關鍵字來調用當前的對象。

在類中調用當前對象的屬性和方法,必須使用”$this->”關鍵字;$this在構造函數中指該構造函數所創建的新對象;方法內的局部變量不屬于對象,不使用$this關鍵字取值。使用$this關鍵字,我們可以在類中調用對象屬性或者方法。

1、調用變量

實例代碼如下:

  1. <?php  
  2.  class user{ 
  3.   private $n
  4.   function __construct(){ 
  5.    $name="Mike"
  6.    echo $this->n=$name
  7.   } 
  8.  } 
  9.  $p=new user(); 
  10. ?> 

2、調用方法

實例代碼如下:

  1. <?php  
  2.  class cal{ 
  3.   public function sum($a,$b){ 
  4.    return $a+$b
  5.   } 
  6.   public function prt($a,$c){ 
  7.    return $a*$c
  8.   } 
  9.   public function result($a,$b,$c){ 
  10.    $a=$this->sum($a,$b); 
  11.    return $this->prt($a,$c); 
  12.   } 
  13.  } 
  14.  $c=new cal(); 
  15.  echo "(2+3)*10= " .$c->result('2','3','10'); 
  16. ?> 

我們來看一下下面的例子,$this在做了什么?實例代碼如下:

  1. <?php 
  2. class Person{  
  3. //下面是人的成員屬性  
  4. var $name//人的名子  
  5. var $sex//人的性別  
  6. var $age//人的年齡  
  7. //定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值  
  8. function __construct($name=""$sex=""$age=""){  
  9. $this->name=$name;  
  10. $this->sex=$sex;  
  11. $this->age=$age;  
  12. }  
  13. //這個人可以說話的方法, 說出自己的屬性  
  14. function say() {  
  15. echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>";  
  16. }  
  17. //對象克隆時自動調用的方法, 如果想在克隆后改變原對象的內容,需要在__clone()中重寫原本 
  18. 的屬性和方法  
  19. function __clone(){  
  20. //$this指的復本p2, 而$that是指向原本p1,這樣就在本方法里,改變了復本的屬性。  
  21. $this->name="我是假的$that->name";  
  22. $this->age=30;  
  23. }  
  24. }  
  25. $p1=new Person("張三""男", 20);  
  26. $p2=clone $p1;  
  27. $p1->say();  
  28. $p2->say();  
  29. ?> 

上例輸出:

執行結果 

我的名子叫:張三性別:男我的年齡是:20 

我的名子叫:我是假的張三性別:男我的年齡是:30

我們來看一下上面的代碼中$this做了什么:

1、訪問對象內部的成員,如$this->name

2、訪問對象的其它方法,如在say()方法內部訪問了其之外的$this->run()和$this->eat("apple")方法。

另外還有一點值得注意的是,局部變量和成員屬性可以同名,但作用范圍和訪問方式不一樣,如在eat()方法體內的$name相當于局部變量,其作用范圍只限于eat方法內部,而Person的成員屬性聲明部分的 $name,則相當于全局變量,可以其它方法中使用$this->name的形式訪問。

實例代碼如下:

  1. <?php    
  2. class UserName   
  3. {    
  4. //定義屬性    
  5. private $name;   
  6. //定義構造函數   
  7. function __construct( $name )   
  8. {   
  9. $this->name = $name;  
  10. //這里已經使用了this指針   
  11. }   
  12. //析構函數   
  13. function __destruct(){}    
  14. //打印用戶名成員函數   
  15. function printName()   
  16. {   
  17. print( $this->name );  
  18. //又使用了PHP關鍵字this指針   
  19. }   
  20. }    
  21. //實例化對象   
  22. $nameObject = new UserName 
  23. "heiyeluren" );    
  24. //執行打印   
  25. $nameObject->printName(); 
  26.  //輸出: heiyeluren   
  27. //第二次實例化對象   
  28. $nameObject2 = new UserName( "PHP5" );   
  29. //執行打印   
  30. $nameObject2->printName(); //輸出:PHP5   
  31. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 万全县| 长岛县| 和田市| 迁安市| 吉安市| 子洲县| 且末县| 阜新市| 迁西县| 蛟河市| 嘉义市| 延津县| 靖州| 怀柔区| 沽源县| 鹤岗市| 榆中县| 油尖旺区| 桦南县| 龙岩市| 敦煌市| 黑水县| 孝感市| 内丘县| 定安县| 邵武市| 万年县| 扎囊县| 安溪县| 新蔡县| 徐水县| 呼和浩特市| 延川县| 望都县| 年辖:市辖区| 共和县| 嘉定区| 湘西| 宝鸡市| 定远县|