類是變數與作用於這些變數的函式的集合。使用下面的語法定義乙個類:
var$items;// 購物車中的物品
// 將 $num 個 $artnr 物品加入購物車functionadd_item($artnr,$num) // 將 $num 個 $artnr 物品從購物車中取出functionremove_item($artnr,$num) elseif ($this->items[$artnr] ==$num) else /* 應該這樣進行 */classcart
類也是一種型別,就是說,它們是實際變數的藍圖。必須用
new 運算子來建立相應型別的變數。
$cart= newcart;$cart->add_item("10",1);$another_cart= newcart;$another_cart->add_item("0815",3);?>
上述**建立了兩個 cart 類的物件 $cart 和
$another_cart,物件 $cart 的方法 add_item()
被呼叫時,新增了 1 件 10 號商品。對於物件 $another_cart,3
件 0815 號商品被新增到購物車中。
$cart 和 $another_cart 都有方法
add_item(),remove_item() 和乙個 items
變數。它們都是明顯的函式和變數。可以把它們當作檔案系統中的某些類似目錄的東西來考慮。在檔案系統中,可以擁有兩個不同的
readme.txt 檔案,只要不在相同的目錄中。正如從為了根目錄訪問每個檔案需要輸入該檔案的完整的路徑名一樣,必須指定需要呼叫的函式的完整名稱:在
php 術語中,根目錄將是全域性名字空間,路徑名符號將是
->。因而,名稱 $cart->items
和 $another_cart->items
命名了兩個不同的變數。注意變數名為 $cart->items,不是
$cart->$items,那是因為在 php 中乙個變數名只有乙個單獨的美元符號。
<?php // 正確,只有乙個 $$cart->items= array("10"=>1);// 不正確,因為 $cart->$items 變成了 $cart->""$cart->$items= array("10"=>1);// 正確,但可能不是想要的結果:
// $cart->$myvar 變成了 $cart->items$myvar='items';$cart->$myvar= array("10"=>1);?>
在定義類的時候,無法得知將使什麼名字的物件來訪問:在編寫 cart
類時,並不知道之後物件的名稱將會命名為 $cart
或者 $another_cart。因而你不能在類中使用
$cart->items。然而為了類定義的內部訪問自身的函式和變數,可以使用偽變數
$this
來達到這個目的。$this 變數可以理解為「我自己的」或者「當前物件」。因而
'$this->items[$artnr] += $num' 可以理解為「我自己的物品陣列的
$artnr 計數器加
$num」或者「在當前物件的物品陣列的
$artnr 計數器加 $num」。
注:偽變數 $this
通常未定義,如果其所在的方法是被靜態呼叫的話。但這不是個嚴格規定:如果乙個方法被從另乙個物件內靜態呼叫的話,則
$this 會被定義。此時
$this 的值是那個發出呼叫的物件。用下例演示:
functionfoo()
if (isset($this)) else $a= newa();$a->foo();a::foo();$b= newb();$b->bar();b::bar();?>
上例將輸出:$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
注:有一些不錯的函式用來處理類和物件。應該關注一下類/物件函式。
PHP新手之學習類與物件 4
五 範圍解析操作符 範圍解析操作符 也可稱作 paamayim nekudotayim 或者更簡單地說是一對冒號,可以用於訪問靜態成員 方法和常量,還可以用於覆蓋類中的成員和方法。當在類的外部訪問這些靜態成員 方法和常量時,必須使用類的名字。把 paamayim nekudotayim 選作該操作符...
PHP類與物件
php 5完全重寫了物件模型以得到更佳效能和更多特性,具有完整的物件模型。php 對待物件的方式與引用和控制代碼相同,即每個變數都持有物件的引用,而不是整個物件的拷貝。我們都知道php物件賦值預設情況下是通過引用傳遞的,但這並不完全正確。比如 classa a newa b a 此時,a,b是同乙個...
PHP類與物件
建立乙個類 class student 歌 public function run public function showself 我的成績是 this sing 成都 class teacher public function dance 例項化物件 student1 new student e...