複習PHP-語言參考-常量

zybing發表於2021-09-09

1.常量是一個簡單值的識別符號,在指令碼執行期間不可修改,全部大寫命名是個好習慣。

2.語法

一般用define定義,defined判斷是否存在

5.3以後可以用const定義(const一般用於類內部屬性的定義)

常量只能包含標量資料(int,bool,string,float)

當無法確定常量名稱時可用constant()獲取

如:

class a  
{    
    const b = "test";    
}    
$a = 'b';    
echo constant("a::".$a);

?>

注意:居然可以設定空字串為常量(這是BUG嗎)

注意:在新增名稱空間後,define和const的訪問形式將會不一樣

如:

namespace sub;    
define("ABC","DEF");    
const DEF="abc";    
class foo {    
    const BAR = 'Hello World';    
}    
constant('ABC'); // works    
//constant('subABC'); // not works    
//constant('DEF'); // not works    
constant('subDEF'); // works    
//constant('foo::BAR'); // not works    
constant('subfoo::BAR'); // works    
?>

所以由此可證明:define出來的常量是全域性的,而const出來的常量是區域性的,這就是它們之間的區別。

get_defined_constants可獲取所有常量組成的陣列

3.魔術常量

大量魔術常量是隨著擴充套件庫而定義的,下面列舉一些隨程式碼位置改變而改變的常量:

__LINE__:檔案中的當前行號

__FILE__:檔案的完整路徑(如果用在被包含的檔案中,則顯示被包含的檔名)

__DIR__:檔案所在目錄(如果用在被包含的檔案中,則顯示被包含的目錄),等價於dirname(__FILE__),這兩個都可以用於絕對路徑的判斷依據

__FUNCTION__:返回該函式的名稱

__CLASS__:返回該類的名稱

__TRAIT__:返回Trait的名稱(Trait是新的一種繼承類似類,目前感覺還沒有什麼大用處)

__METHOD:返回類的方法名(與__FUNCTION__的區別在於他的形式是類名::方法名)

__NAMESPACE__:返回當前名稱空間的名稱

擴充套件:get_class可以返回物件的類名

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2802099/,如需轉載,請註明出處,否則將追究法律責任。

相關文章