1.final關鍵字:最終版本的類或方法,在類的前面加上final表示該類不能被繼承,在方法前面加上final表示該方法不能在子類中重寫。
<?php/**1.類不能被繼承
*/final
class
aclass b extends
a
<?php/**2.方法不能被重寫
*/classa}
class b extendsa}
2.static關鍵字:使用static關鍵字可以將類中的成員標識為靜態的,既可以用來標識成員屬性,也可以用來標識成員方法。而static成員作為整個類的屬性存在,則不管通過類建立多少個物件(甚至可以是沒有物件),這個static成員總是唯一存在的,在多個物件之間共享的。因為使用 static 標識的成員是屬於類的,所以與物件例項和其他的類無關。類的靜態屬性非常類似於函式的全域性變數。類中的靜態成員是不需要物件而使用類名來直接訪問的,在類中宣告的成員方法中,也可以使用關鍵字「self」來訪問其他靜態成員,因為靜態成員是屬於類的,而不屬於任何物件,所以不能用$this來引用它,在php中給我們提供了self關鍵字,就是在類的成員方法中用來代表本類的關鍵字。
self::staticattrbutename; //靜態成員屬性名
self::staticpropertyname(); //
靜態成員方法名
如果在類的外部訪問類中的靜態成員,可以使用物件引用和使用類名訪問,但通常選擇使用類名來訪問。如果在類內部的成員方法中訪問其他的靜態成員,通常使用self的形式去訪問,最好不要直接使用類名稱。
示例:統計乙個類建立物件的個數
<?phpclass
myclass
static
function
getcount()}//
初始化靜態成員屬性
myclass::$count = 0;
//建立多個物件
$obj1 = new
myclass;
$obj2 = new
myclass;
$obj3 = new
myclass;
//訪問方式一:類名訪問靜態成員屬性
echo myclass::$count; //
輸出:3
echo "
";//
訪問方式二:類名訪問靜態成員方法
echo myclass::getcount(); //
輸出:3
echo "
";//
訪問方式三:物件引用訪問
echo
$obj2->getcount(); //
輸出:3
3.__call()魔術方法:在物件中呼叫乙個不可訪問方法時呼叫。
//該方法有兩個引數,第乙個引數 $function_name 會自動接收不存在的方法名,第二個 $arguments 則以陣列的方式接收不存在方法的多個引數。
__call() 方法的格式:
function __call(string$function_name, array
$arguments
)
4.const關鍵字:雖然 const 和 static 的功能不同,但使用的方法比較相似。在 php 中定義常量是通過呼叫 define()函式來完成的,但要將類中的成員屬性定義為常量,則只能使用 const 關鍵字。將類中的成員屬性使用const關鍵字標識為常量,其訪問的方式和靜態成員一樣,都是通過類名或在成員方法中使用self關鍵字訪問,也不能用物件來訪問。標識為常量的屬性是唯讀的,不能重新賦值。如果在程式中試圖改變它的值,則會出現錯誤。所以在宣告常量時一定要賦初值,因為沒有其他方式後期為常量賦值。注意,使用const宣告的常量名稱前不要使用「$」符號,而且常量名稱通常都是大寫的。
沒事的時候總結一下,繼續努力中……
PHP 物件導向程式設計 常見的關鍵字
目的 一是為了安全,二是沒必要被繼承或重寫 例項 demo.class.php final關鍵字修飾的類,是最終的類不能被繼承 final class demo class demo1 extends demo d1 new demo1 報錯 d1 say 報錯 格式 類 靜態屬性 類 靜態方法 格...
php物件導向(OOP) final關鍵字
這個關鍵字只能用來定義 類和定義 方法,不能使用final這個關鍵字來定義成員屬性,因為final是常量的意思,我們在php裡定義常量使用的是define 函式,所以不能使用final來定義成員屬性。使用final關鍵標記的類不能被繼承 final class person class studen...
物件導向關鍵字
this關鍵字 this是一種特殊的引用,指向當前物件 this的兩種使用方法 1 如果發生區域性變數可以成員變數命名衝突時,可以通過this.成員變數名的方式區分例項變數和區域性變數 2 乙個構造方法中需要呼叫同乙個類的另乙個構造方法,可以通過this 的方式呼叫,但this 必須要書寫在第一行 ...