PHP 魔術常量
1,__FILE__
檔案的完整路徑和檔案名稱。如果用在被包含檔案中,則返回被包含的檔案名稱。自 PHP 4.0.2 起,__FILE__?總是包含一個絕對路徑(如果是符號串連,則是解析後的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
這個變數,我用的是最多的,估計也是大家用的最多的。
web伺服器都會指定一個documentroot的,但是不同的伺服器,設定的documentroot有可能是不同的,在這種情況下,把一個網站從一個伺服器搬家到另一個伺服器,這樣就有可能因為路徑的不同,造成網站跑不起來。
"; echo __FILE__; echo "
"; echo dirname(__FILE__); echo "
"; echo dirname(dirname(__FILE__)); ?>
?
2,__LINE__
檔案中的當前行號。
?
3,__CLASS__
類的名稱,PHP5返回的結果是區分大小寫
"; } function say_b() { echo "'b' - said the " . get_class($this) . "
"; } } class derived_class extends base_class { function say_a() { parent::say_a(); echo "'a' - said the " . __CLASS__ . "
"; } function say_b() { parent::say_b(); echo "'b' - said the " . get_class($this) . "
"; } } $obj_b = new derived_class(); $obj_b->say_a(); echo "
"; $obj_b->say_b(); ?> 結果為: 'a' - said the base_class 'a' - said the derived_class 'b' - said the derived_class 'b' - said the derived_class ?有的時候,我們可以用get_class來代替__CLASS__
4,__FUNCTION__和__METHOD__
__FUNCTION__:函數名稱,php5中返回的結果是區分大小寫
__METHOD__:方法中的函數名稱,php5中返回的結果是區分大小寫
二個都是取得方法的名稱,有什麼不同呢?
"; echo __METHOD__; } } function good (){ echo __FUNCTION__; echo "
"; echo __METHOD__; } $test = new test(); $test->a(); echo "
"; good(); ?> 返回結果: a test::a good good ?相對於孤立的函數來說,二個都可以取出函數名,沒什麼區別,如果是class中的方法時,__FUNCTION__只能取出class的方法名,而__METHOD__不光能取出方法名,還能取出class名
5,__DIR__
檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。它等價於 dirname(__FILE__)。除非是根目錄,否則目錄中名不包括末尾的斜杠。(PHP 5.3.0中新增)
如果在5.3以前的版本中想用__DIR__的話,可以這樣
?
6,__NAMESPACE__
當前命名空間的名稱(大小寫敏感)。這個常量是在編譯時間定義的(PHP 5.3.0 新增)
7,__STATIC__
當你調用class的靜態方法時,返回class名稱,區分大小寫。如果在繼承中調用的話,不管在繼承中有沒有定義,都能返回繼承的class名。
?