PHP中的魔術(shù)常量是什么?魔術(shù)(Magic)常量是PHP中預(yù)定義的常量,這些常量可以根據(jù)它們的使用位置而變化。本篇文章就來(lái)帶大家認(rèn)識(shí)一下PHP魔術(shù)常量,介紹一下魔術(shù)常量的基本用法及做用。
PHP 向它運(yùn)行的任何腳本提供了大量的預(yù)定義常量。不過(guò)很多常量都是由不同的擴(kuò)展庫(kù)定義的,只有在加載了這些擴(kuò)展庫(kù)時(shí)才會(huì)出現(xiàn),或者動(dòng)態(tài)加載后,或者在編譯時(shí)已經(jīng)包括進(jìn)去了。有幾個(gè)魔術(shù)常量它們的值隨著它們?cè)诖a中的位置改變而改變。
__LINE__
文件中的當(dāng)前行號(hào)。
<?php header("Content-type:text/html;charset=utf-8"); echo '這是第 " ' . __LINE__ . ' " 行'; ?>
運(yùn)行效果如圖所示
__FILE__
文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
自 PHP 4.0.2 起,__FILE__ 總是包含一個(gè)絕對(duì)路徑(如果是符號(hào)連接,則是解析后的絕對(duì)路徑),而在此之前的版本有時(shí)會(huì)包含一個(gè)相對(duì)路徑。
<?php header("Content-type:text/html;charset=utf-8"); echo '該文件位于 " ' . __FILE__ . ' " '; ?>
運(yùn)行效果如圖所示
__DIR__
文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。
它等價(jià)于 dirname(__FILE__)。除非是根目錄,否則目錄中名不包括末尾的斜杠。(PHP 5.3.0中新增)
<?php header("Content-type:text/html;charset=utf-8"); echo '該文件位于 " ' . __DIR__ . ' " '; ?>
運(yùn)行效果如圖所示
__FUNCTION__
返回函數(shù)名稱(PHP 4.3.0 新加)。
自 PHP 5 起本常量返回該函數(shù)被定義時(shí)的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。
<?php header("Content-type:text/html;charset=utf-8"); function test() { echo '函數(shù)名為:' . __FUNCTION__ ; } test(); ?>
運(yùn)行效果如圖所示
__CLASS__
返回類的名稱(PHP 4.3.0 新加)。
自 PHP 5 起本常量返回該類被定義時(shí)的名字(區(qū)分大小寫)。在 PHP 4 中該值總是小寫字母的。類名包括其被聲明的作用區(qū)域(例如 FooBar)。注意自 PHP 5.4 起 __CLASS__ 對(duì) trait 也起作用。當(dāng)用在 trait 方法中時(shí),__CLASS__ 是調(diào)用 trait 方法的類的名字。
<?php header("Content-type:text/html;charset=utf-8"); class test { function _print() { echo '類名為:' . __CLASS__ . "<br>"; //輸出類名 echo '函數(shù)名為:' . __FUNCTION__ ; //輸出方法名 } } $t = new test(); //創(chuàng)建對(duì)象,調(diào)用方法 $t->_print(); ?>
運(yùn)行效果如圖所示
__METHOD__
類的方法名(PHP 5.0.0 新加)。返回該方法被定義時(shí)的名字(區(qū)分大小寫)。
<?php header("Content-type:text/html;charset=utf-8"); class test { function _print() { echo '類名為:' . __CLASS__ . "<br>"; echo '__FUNCTION__:' . __FUNCTION__. "<br>" ; echo '__METHOD__:' .__METHOD__ ; } } $t = new test(); $t->_print(); ?>
運(yùn)行效果如圖所示
__NAMESPACE__
當(dāng)前命名空間的名稱(區(qū)分大小寫)。此常量是在編譯時(shí)定義的(PHP 5.3.0 新增)。
<?php namespace MyProject; header("Content-type:text/html;charset=utf-8"); echo '命名空間為:"', __NAMESPACE__, '"'; // 輸出 "MyProject" ?>
運(yùn)行效果如圖所示
如果你想了解更多關(guān)于PHP的知識(shí)可以到網(wǎng)站的php教程中去學(xué)習(xí)其他更有趣的知識(shí)。