【PHP篇】面向物件基礎
1、宣告:class 類名{
//成員屬性(變數) 修飾符 $變數名=初值;
//成員方法(函式) 修飾符 function 函式名(){ 執行;}
}
2、生成類物件:$物件名=new 類名();//也可以不加括號
3、訪問類成員:$物件名->成員名;//成員為成員屬性時不加 $
4、類的內部訪問: $this->成員名;//不可直接用成員名,this表示當前類,self表示類名
5、修飾符:private私有的,不可使用物件直接訪問,只能本類內部訪問
protected保護的,只能本類和本子類內部使用
public公有的,預設,類內外部均可用
final 最終的,修飾類時不可被繼承,修飾的方法不可被覆蓋,不修飾成員變數
static 靜態的,共用類成員,訪問時不可用物件訪問,類名::靜態成員
const 類常量,只能修飾類變數,宣告賦初值,不可改值,訪問:類名::類常量名
6、構造方法: function __construct(形參){執行;} //物件建立時第一個自動呼叫的方法
//也可為方法名和類名相同的方法; 兩個同時存在時系統呼叫__construct()
//構造方法有形參時建立物件時不傳遞會有警告
7、析構方法:function __destruct(){執行;} //物件消亡時最後一個自動呼叫方法
8、變數名呼叫類變數,可變變數法:
9、魔術方法:
成員變數為私有的(private),使用 $物件名->成員變數名 時自動呼叫如下函式:
function __get($屬性名){ }//屬性名字,使用也是與可變變數相同;
function __set($屬性名,$屬性值){ }//在外設定私有變數時自動呼叫
function __isset($屬性名){ return false…;}//在外使用isset函式判斷私有變數時自動呼叫
function __unset($屬性名){ }//在外使用unset函式刪除私有變數時自動呼叫
function __toString(){return “輸出值”}//必須返回字串值,echo $物件名;時自動呼叫
function __call($函式名,$實引數組名){ }//物件所呼叫函式不存在時自動進入
static function __callstatic($函式名,$實引數組名){ }//5.3版本,類呼叫靜態函式不存在時自動進入
function __invoke($形參){ };//5.3版本,在物件名(“實參”);時自動呼叫
10、魔術變數:
1) __CLASS__當前類名
2) __METHOD__當前類方法
11、克隆物件:
物件引用:$新物件名=$原物件名;//併為引數新物件,只是指標指向同一處
克隆:$新物件= clone $原物件;//正真的兩個物件
自動呼叫函式:function __clone(){ $this->新物件成員;}//可初始化新物件
12、繼承:class 子類名 extends 父類名{ }//訪問時直接子類物件呼叫
private成員不可被子類內外使用,私有不繼承
成員名相同則覆蓋,子類優先,子類內部使用parent::成員名;呼叫父類成員
覆蓋時許可權只能大於或等於原許可權
繼承要呼叫父類構造方法:子類構造方法第一行寫parent::__construct(實參);
13、判斷變數是否屬於某類:$物件名 instanceof 類名;//返回bool
14、類的序列化(序列):$序列化字串名=serialize($原物件名);//物件轉字串,字串包含所有
function __sleep(){return array(成員變數,成員變數);}//自動呼叫,返回需序列化變數
15、類的反序列化:$新物件名= unserialize (“序列化字串”);//字串轉物件
function __wakeup(){}//自動呼叫,可初始化類變數
16、抽象類:修飾符為abstract,不一定要有抽象方法
17、抽象方法:宣告一個方法沒有方法體//沒有大括號{ },修飾符為abstract,一定在抽象類裡
18、抽象類的繼承:子類必須全部實現父類的全部抽象方法,否則不可建立物件
19、介面:interface 介面名{ }//方法必須全是抽象方法,成員屬性必須全是const量,許可權必須是public
20、介面的繼承:介面繼承介面,是對父介面的擴充套件新方法和新屬性
21、介面的實現:class類名 implements 介面1,介面2{ }
22、解析字串程式碼:$字串1="echo 'ttt';";eval($字串1);//執行輸出ttt