php物件導向常見的關鍵字和魔術方法

2022-06-21 10:06:13 字數 2060 閱讀 8956

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的形式去訪問,最好不要直接使用類名稱。

示例:統計乙個類建立物件的個數

<?php

class

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 必須要書寫在第一行 ...