- 宣告方式
- 關鍵字為 class, 尾端不用分號
- member data需加關鍵字 var, e.g. var $unit = 0;
- member function需加關鍵字 function, e.g. function add(){}
- function 不用寫 return type
- 建立物件
- 以 new建立, 但不需 (), e.g. $bottle = new UnitCounter; // UnitCounter為 class, 建立好 instance後, assign給 $bottle變數
- 存取物件
- class name沒有大小寫之分
- 以 -> 存取 member data與 member function, e.g. $bottle->unit, $bottle->add()其中 $unit為 class UnitCounter的 member data, 而 add()為其 member function
- member function中以 $this->unit, $this->add()呼叫其 member data or function
- 建構與解構
- 建構式為 function __construct() 或與 class同名的 function, 不過一般建議使用 __construct()以便於搬移類別 (P.S. 此為 PHP 5之後才支援的功能), 另外, __construct()可帶參數建構成員變數.
- 解構式為 function __destruct(), 不可帶參數. 通常用於關閉資料庫的連結. 另外, 有時候很好用, 例如: 擁有 static 變數為 static $nObj; 其在 construct就呼叫其 +1, 而 destruct則 -1, 則可以輕鬆維護該類所有 object個數
- 利用 unset()可摧毀物件
- 存取設定
- 預設皆為 public
- private:
- 於變數或 function前加 private, 不能用 private: 來一次宣告一堆 private變數
- 同時也支援 protected
- static:
- 與 C++相同, 同一類別共享 static變數.
- static function只能呼叫 static變數, 當然也不能呼叫 $this, 因為其並沒有建立物件
- static變數以類別參照方式呼叫, e.g. class Donation 擁有 static member $num, 則 member function 以 Donation::$num而非 $this->num來存取.
- 複製物件
- 建立新物件後, PHP 5回傳的是物件參照, 而不是物件本身(copy). 從下方可看出端倪. (假定 unitCounter擁有 $unit, 且 add($value)為 $unit=$unit+$value;
$a = new UnitCounter(); $a->add(5); $b = $a; $b->add(5); print "number = {$a->$unit}"; //列出 number = 10
- 若要純粹複至某物件的副本, e.g. 就像複製資料庫一樣, 不止複製格式, 也複製目前的內容, 則使用 __clone()函數, 見下例
$a = new UnitCounter(); $a->add(5); $b = $a->__clone(); $b->add(5); print "number = {$a->$unit}"; //列出 number = 5 print "number = {$b->$unit}"; //列出 number = 10
- 繼承
- 關鍵字 extends
- 單一繼承
- 以 parent:: 呼叫父類別, e.g. parent::__construct($parameter); 呼叫父建構子
2012年9月21日 星期五
[PHP] PHP的類別與物件
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言