php類

php類

類是變數與作用於這些變數的函式的集合。使用下面的語法定義一個類.

基本介紹

  • 中文名:php類
  • 外文名:PHP class
  • 類型:計算機術語
  • 來源:PHP程式語言
創建類,類class命名規範,語法說明,注意事項,

創建類

class 類名{    #類的實現    #成員量    #封裝函式    #成員方法}

類class命名規範

1) 類名只能使用字母,下劃線開頭,不能以數字開頭
2) 類名不能使用關鍵字
3) 類名一定有意義
4) 類名不區分大小寫,但是最好使用駝峰法的寫法
userModel UserModel
5)類名不能重複
6)Class Connect{ } 空類,空函式么有意義,空類是為了項目後期擴展預留的接口

語法說明

類是變數與作用於這些變數的函式的集合。使用下面的語法定義一個類:
<?php
class Cart { var $items; // 購物車中的物品
// 將 $num 個 $artnr 物品加入購物車
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
} // 將 $num 個 $artnr 物品從購物車中取出
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num; return true;
} elseif
($this->items[$artnr] == $num) {
unset($this->items[$artnr]); return true;
} else {
return false; }
}
} ?>
上面的例子定義了一個 Cart 類,這個類由購物車中的商品構成的數組和兩個用於從購物車中添加和刪除商品的函式組成。
<?php
class test {
?>
<?php
function test() {
print 'OK'; }
}?>
但是以下用法是可以的:
<?phpclass test { function test() { ?> <?php print 'OK'; }}?>
在 php 4 中,var 變數的值只能初始化為常量。用非常量值初始化變數,需要一個初始化函式,該函式在對象被創建時自動被調用。這樣一個函式被稱之為構造函式(見下面)。
<?php/* php 4 中不能這樣用 */class Cart { var $todays_date = date("Y-m-d"); var $name = $firstname; var $owner = 'Fred ' . 'Jones'; /* 不過包含有常量的數組可以 */ var $items = array("VCR", "TV");}/* 應該這樣進行 */class Cart { var $todays_date; var $name; var $owner; var $items = array("VCR", "TV"); function Cart() { $this->todays_date = date("Y-m-d"); $this->name = $GLOBALS['firstname']; /* etc. . . */ }}?>
類也是一種類型,就是說,它們是實際變數的藍圖。必須用 new 運算符來創建相應類型的變數。
<?php$cart = new Cart;$cart->add_item("10", 1);$another_cart = new Cart;$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 的值是那個發出調用的對象。用下例演示:
<?phpclass A{ function foo() { if (isset($this)) { echo '$this is defined ('; echo get_class($this); echo ")/n"; } else { echo "/$this is not defined./n"; } }}class B{ function bar() { A::foo(); }}$a = new A();$a->foo();A::foo();$b = new B();$b->bar();B::bar();?>上例將輸出:
$this is defined (a)$this is not defined.$this is defined (b)$this is not defined.

相關詞條

熱門詞條

聯絡我們