Object
設計class來產生物件。php5_1_class.php
- class包含屬性(attributes)、建構子(constructor)與解構子(deconstructor)、方法(methods)三個部分。
- 解構子(__destruct())會在物件使用完後自動執行並清空所有之前配置的資源。
- __CLASS__屬於Magic Constants,會傳回目前class的名字。
- 使用$this來指稱本class,使用->來指位變數或是方法。
- 使用$this->radius($在this之前)取得$radius的值。
- 或使用$cir->radius(radius之前沒有$號)取得$radius的值。
- 使用include(require)導入class可在其他檔案產生物件。 php5_1_includeClass.php
static
當變數或方法使用static關鍵字修飾時,不需要產生(new)物件(instance)便可取得變數或使用方法。
php3_4_time.php
- 變數與方法使用static修飾後,不需要new一個新的instance便可直接取得,使用語法為classname::variablename或classname::methodname()。
- 若是堅持new一個instance再使用,會產生Warning。
- self表示目前class,也是使用::來取得變數或使用方法。使用static不可使用$this。
Inheritance
class可以繼承,使用關鍵字extends。php5_2_inheritance.php
- 繼承後的物件擁有原物件的屬性。
Visibility
- 使用public, protected, private來控制存取變數或方法的權限。
- public: 在class內外皆可存取(預設值)。
- protected: 在class或繼承該class的classes內可存取。
- private: 僅可在該class內存取。
php5_3_visibility.php
- 僅能設計一個Constructor,所以建構時僅能使用constructor所設計的argument,但若是在內給初值,便可不給argument而直接使用預設值。
- 使用getters與setters來存取private修飾的變數。
- 在class外存取private或protected修飾的變數($ell->radiusB)會產生錯誤。
- 雖然原class內有private屬性參數,但是還是能夠繼承,只是無法存取private修飾之值,但是protected修飾的值可以取得。
- 因為無法取得$radiusA的值,所以傳回橢圓形(false)。
Magic Constants
Magic Constants是PHP內建的常數變數,會隨著出現位置有不同的值。其前後各有兩個底線。- Magic Constants:
- __LINE__: 傳回檔案目前的行數。
- __FILE__: 傳回目前檔案的路徑與名稱。
- __DIR__: 傳回目前檔案的directory。
- __FUNCTION__: 傳回目前函數的名稱。
- __CLASS__: 傳回目前class的名稱。
- __METHOD__: 傳回目前class method的名稱。
- __NAMESPACE__: 傳回目前的namespace。
- 需使用namespace關鍵字定義Name Space才有__NAMESPACE__。