訪問物件中的成員,是通過」物件->成員」的方式訪問的,這是在物件的外部去訪問物件中成員的形式, 那麼如果我想在物件的內部,讓物件裡的方法訪問本物件的屬性, 或是物件中的方法去呼叫本物件的其它方法這時我們怎麼辦?因為物件裡面的所有的成員都要用物件來呼叫,包括物件的內部成員之間的呼叫,所以在php裡面給 我提供了乙個本物件的引用
$this
, 每個物件裡面都有乙個物件的引用$this來代表這個物件,完成物件內部成員的呼叫, this的本意就是「這個」的意思, 上面的例項裡面,我們例項化三個例項物件$p1、 $p2、 $p3,這三個物件裡面各自存在乙個$this分別代表物件$p1、$p2、$p3 。
通過上圖我們可以看到,
$this就是物件內部代表這個物件的引用
,在物件內部和呼叫本物件的成員和物件外部呼叫物件的成員所使用的方式是一樣的。
$this->屬性: $this->name; $this->age; $this->***;
$this->方法 :$this->say(); $this->run();
修改一下上面的例項,讓每個人都說出自己的名字,性別和年齡: 1
2345
6789
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
<?php
class person
function run()
}$p1 = new person(); // 建立例項物件$p1
$p2 = new person(); // 建立例項物件$p2
$p3 = new person(); // 建立例項物件$p3
// 下面三行是給$p1物件屬性賦值
$p1->name = "張三";
$p1->*** = "男";
$p1->age = 20;
// 下面訪問$p1物件中的說話方法
$p1->say();
// 下面三行是給$p2物件屬性賦值
$p2->name = "李四";
$p2->*** = "女";
$p2->age = 30;
// 下面訪問$p2物件中的說話方法
$p2->say();
// 下面三行是給$p3物件屬性賦值
$p3->name = "王五";
$p3->*** = "男";
$p3->age = 40;
// 下面訪問$p3物件中的說話方法
$p3->say();
?>
輸出結果為:
我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:李四 性別:女 我的年齡是:30我的名子叫:王五 性別:男 我的年齡是:40
分析一下這個方法: 1
23function say()
在$p1、$p2和$p3這三個物件中都有say()這個方法,$this分別代表這三個物件, 呼叫相應的屬性,列印出屬性的值,這就是在物件內部訪問物件屬性的方式, 如果相在say()這個方裡呼叫run()這個方法也是可以的,在say()這個方法中使用$this->run()的方式來完成呼叫。
C string 特殊引用型別
c 有string關鍵字,在翻譯成.net類時,它就是system.string.有了它,像字串連線和字串複製這樣的操作就簡單了.1 string 是引用型別還是值型別 引用型別操作 當使用過載操作符 給string物件賦值時,string的物件是引用型別,它保留在堆上,而不是堆疊上.因此,當把乙個...
html中特殊字元引用
blog.sina.com.cn s blog 62defbef0101qlr5.html 如果顯示的文字中包含一些特殊字元 比如可能會與標記符號衝突的 和 符號 時需要通過字元引用的方式才能輸入。在html中有兩種字元引用型別 字元引用和實體引用。字元引用和實體引用都是以乙個和號 開始並以乙個分號...
C string 特殊的引用型別
net 框架程式設計 修訂版 中有這樣一段描述 string型別直接繼承自object,這使得它成為乙個引用型別,也就是說執行緒上的堆疊上不會駐留有任何字串。譯註 注意這裡的 直接繼承 直接繼承自object的型別一定是引用型別,因為所有的值型別都繼承自system.valuetype。值得指出的是...