> ### ***軟件工程三大特性:重用性、靈活性、可擴展性***
**類的三大特性:封裝、繼承、多態**
定義類文件要跟類名相同,后面跟.class,例如:Index.class.php
$this是代表對象本身,self是代表類本身,它只跟類有關,與對象無關
parent是調用父類的方法,如調用父類的構造函數:parent::__construct()
類的成員修飾符:
public 類的外部、子類、類本身都可以調用
protected 除了類的外部不可調用,其它可以
private 只有類本身可以調用,其它不行
注:靜態類中不能有$this,因為$this是指的是對象,而靜態類是調用類里面的屬性與方法,只與類本身有關,與對象無關。
抽象類:如果一個類中有抽象方法,那么這個類就叫抽象類。
```
abstract class 類名{
private $name;
public function start() {
……
}
abstaact function run();
}
```
接口:所有方法都是抽象方法。
魔術方法(都是自動執行):
__construct(): 構造方法,實例化對象是自動執行
__destruct(): 析構方法,對象銷毀時自動執行
__toString(): 給一個類增加說明書,可以直接用echo輸出類
__call(): 在對象中調用一個不可訪問方法時自動調用
__isset(): 當對不可訪問屬性調用時 isset() 或 empty() 時, 會被自動調用。
__unset(): 當對不可訪問屬性unset() 時,會被自動調用
__set(): 是給私有變量設置值
__get(): 是獲取私有變量的值
PHP魔術常量:
__LINE__ :文件中的當前行號
__FILE__ :文件的完整路徑和文件名,如果用在被包含文件中,則返回被包含的文件名。
__DIR__ :文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。
__FUNCTION__ :返回該函數被定義時的名字(區分大小寫)
__CLASS__ :返回該類被定義時的名字(區分大小寫)
__TRAIT__ :實現了代碼復用的一個方法,稱為 traits
__METHOD__ :返回該方法被定義時的名字(區分大小寫)
__NAMESPACE__ :當前命名空間的名稱(區分大小寫)