PHP5的物件模型 3 定義乙個類

2021-09-30 02:42:36 字數 1569 閱讀 7057

當你宣告乙個類,你需要列出物件應有的所有變數和所有函式—被稱為屬性和方法. 3.1.1中顯示了乙個類的構成. 注意在大括號({})內你只能宣告變數或者函式. 3.1.2中顯示了如何在乙個類中定義三個屬性和兩個方法.

3.1.1

class name extends another class

3.1.2

//定義乙個跟蹤使用者的類

class user

// 獲取最後訪問的時間

function getlastlogin() }

//建立乙個物件的例項

$user = new user("leon", "sdf123");

//獲取最後訪問的時間

print($user->getlastlogin() ."

n");

//列印使用者名稱

print("$user->name

n");

?>

當你宣告屬性,你不需要指明資料型別. 變數可能是整型,字串或者是另乙個物件,這取決於實際情況.在宣告屬性時增加注釋是乙個好主意,標記上屬性的含義和資料型別.

當你宣告乙個方法,你所做的和在類外部定義乙個函式是一樣的. 方法和屬性都有各自的命名空間. 這意味著你可以安全地建立乙個與類外部函式同名的方法,兩者不會衝突. 例如,乙個類中可以定義乙個名為date()的方法. 但是你不能將乙個方法命名為php的關鍵字,如for或者while.

類方法可能包含php中所謂的type hint. type hint 是另乙個傳遞引數給方法的類的名字. 如果你的指令碼呼叫方法並傳遞乙個不是類的例項的變數,php將產生乙個」致命(fatal)錯誤」 . 你可能沒有給其它型別給出type hint,就像整型,字串,或者布林值. 在書寫的時候, type hint是否應當包含陣列型別仍存在爭議.

type hint是測試函式引數或者運算子的例項的資料型別的捷徑. 你可能總是返回這個方法. 確認你強制讓乙個引數必須是哪種資料型別,如整型. 3.2.1 確保編譯類只產生widget的例項.

3.2.1

//元件

class widget

//裝配器

class assembler }

//建立乙個元件物件

$thing = new widget;

$thing->name = 'gadget';

//裝配元件

assembler::make($thing);

?>

除了傳遞引數的變數外,方法含有乙個特殊的變數. 它代表類的個別例項. 你應當用這個來指向物件的屬性和其它方法.一些物件導向的語言假設乙個不合格的變數提交給本地屬性,但在php中方法的任何變數只是在方法的一定範圍內. 注意在user類的建構函式中這個變數的使用(3.1.2).

php在屬性和方法宣告前定義乙個訪問限定語,如public,private和protected. 另外,你可以用」static」來標記乙個成員. 你也可以在類中宣告常量. 本章稍後會有不同訪問方式的相關討論.

你可以在一行中列出相同訪問方式的幾個屬性,用逗號來分隔它們. 在3.1.2中,user類有兩個private屬性--$password和$lastlogin.

PHP5的物件模型 12 類的自動載入

第十二節 類的自動載入 當你嘗試使用乙個未定義的類時,php會報告乙個致命錯誤.解決方法就是新增乙個類,可以用include包含乙個檔案.畢竟你知道要用到哪個類.但是,php提供了類的自動載入功能,這可以節省程式設計的時間.當你嘗試使用乙個php沒有組織到的類,它會尋找乙個 autoload的全域性...

PHP5的物件模型 12 類的自動載入

第十二節 類的自動載入 當你嘗試使用乙個未定義的類時,php會報告乙個致命錯誤.解決方法就是新增乙個類,可以用include包含乙個檔案.畢竟你知道要用到哪個類.但是,php提供了類的自動載入功能,這可以節省程式設計的時間.當你嘗試使用乙個php沒有組織到的類,它會尋找乙個 autoload的全域性...

PHP5的物件模型 9 繫結

第九節 繫結 除了限制訪問,訪問方式也決定哪個方法將被子類呼叫或哪個屬性將被子類訪問.函式呼叫與函式本身的關聯,以及成員訪問與變數記憶體位址間的關係,稱為繫結.在計算機語言中有兩種主要的繫結方式 靜態繫結和動態繫結.靜態繫結發生於資料結構和資料結構間,程式執行之前.靜態繫結發生於編譯期,因此不能利用...