一、 靜態static關鍵字
1、靜態屬性用於保存類的公有數據
2、靜態方法中只能訪問靜態屬性
3、靜態成員不需要通過實例化來訪問。
4、類的內部可以通過self或者static關鍵字訪問自身靜態變量。訪問變量的時候需要在變量名前加美元符號。
5、可以通過parent關鍵字訪問父類的靜態成員。
6、可以通過類的名稱在類定義外部訪問靜態成員。
二、對象引用的基本概念
class A{};
$B=new A();
$C=$B;
此時變量$C引用的是一個A對象, 當變量$B被賦值爲null的時候,$C並不會爲null。
$C=&$B
此時當變量$B被賦值爲null的時候,$C會爲null。
對象的析構函數__destruct當且僅在沒有變量繼續引用的時候,就會調用。析構函數和
構造函數不能顯示調用。
三、數據訪問
parent關鍵字可以用於調用父類中被子類重寫了的方法.
self關鍵字可以用於訪問類自身的成員方法,也可用於訪問自身的靜態成員和類常量。
不能用於訪問類自身的屬性。使用常量的時候不需要在常量名稱前加上$符號。
static關鍵字用於訪問類自身定義的靜態成員,防僞靜態屬性需要在屬性前添加$符號。
四、魔術方法
__tostring()方法 對象被當做String使用時,這個方法被自動調用。
class A(){}:
在類中定義了__tostring()方法的時候,直接聲明$obj=new A(); echo $obj會自動調用__tostring()方法.
__invoke()方法 當類被當做方法調用的時候,這個方法會被自動調用
class A(){}:
在類中定義了__invoke()方法的時候,直接聲明$obj=new A(); echo $obj()會自動調用__invoke()方法.
__call() 當訪問類中不存在的方法的時候,這個方法會被自動調用
參數列表 __call($name,$parameters)
__callStatic()當訪問類中不存在的靜態方法的時候,這個方法會被自動調用。
參數列表 __callStatic($name,$parameters)
必須被聲明爲static
__get()方法當訪問類中不存在的屬性的時候,
會自動調用這個方法。
函數的參數__get($name)
__set()方法當給類中不存在的屬性賦值的時候,會自動調用這個方法。
__set()函數參數($name,$value);
__isset()方法當用isset()或者empty()判斷屬性存不存在的時候,
傳入的屬性並不存在的時候,該方法將會自動調用。
__unset()方法當用unset()傳入一個不存在的屬性的時候,會自動調用、
__clone()方法,
當使用clone方法的時候,如果沒有聲明__clone方法,
使用$obj2=clone $obj1;能夠完全拷貝obj1的內容,並且更改
$obj2的屬性不會影響到$obj對應的屬性。
__clone可在這個時候,控制clone過程中,希望不被複制的內容。