您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用PHP常用的八個(gè)魔術(shù)常量”,在日常操作中,相信很多人在怎么使用PHP常用的八個(gè)魔術(shù)常量問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用PHP常用的八個(gè)魔術(shù)常量”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
魔術(shù)常量是什么
魔術(shù)常量準(zhǔn)確來(lái)說(shuō)并不能算是常量,常量我們?cè)谥暗奈恼轮形覀兘榻B到,常量被定義之后是不能被改變的。但是魔術(shù)常量是PHP預(yù)定義的一些常量,這些預(yù)定義的常量能夠因?yàn)樗谖恢玫淖兓兓?br/>
很多的預(yù)定義常量在任意一個(gè)腳本中都是PHP提供的,常量不同他們的拓展庫(kù)也是不同的。魔術(shù)常量可以理解為特殊的預(yù)定義常量。
其中魔術(shù)常量的書(shū)寫(xiě)格式通常是用兩個(gè)下劃線(__
)開(kāi)頭兩個(gè)下劃線結(jié)尾,比如:__LINE__
、__FILE__
等等。講到書(shū)寫(xiě)格式的話,需要知道,魔術(shù)常量不區(qū)分大小寫(xiě),但是盡量書(shū)寫(xiě)的時(shí)候還是采用大寫(xiě)的形式。
魔術(shù)常量的使用
PHP的運(yùn)行環(huán)境中提供了八個(gè)魔術(shù)常量,就像上文中說(shuō)的,雖然被叫做常量,但準(zhǔn)確來(lái)說(shuō)不算是常量,他們的值隨著代碼中的變化而改變,接下來(lái)我們分別來(lái)看一下這八個(gè)魔術(shù)變量。
1.__LINE__
表示文件中當(dāng)前的行號(hào)
接下來(lái)我們通過(guò)示例來(lái)看一下__LINE__
魔術(shù)常量的使用,并且看一下隨著位置的變化魔術(shù)常量的值有什么變化。
示例如下:
<?php echo '這是第 " ' . __LINE__ . ' " 行<br/>'; echo '這是第 " ' . __LINE__ . ' " 行<br/>'; echo '---------------<br/>'; echo '這是第 " ' . __LINE__ . ' " 行'; ?>
輸出結(jié)果:
在上述示例中,我們通過(guò)魔術(shù)變量__LINE__就能夠獲取當(dāng)前代碼所在位置的行數(shù)。
其中需要注意的是:我們能夠發(fā)現(xiàn),當(dāng)代碼所在的位置不同,其所輸出的結(jié)果也是不同的。所以我們上文中說(shuō)了魔術(shù)常量并不能算是常量,它的值隨著代碼的變化而改變。我們接著往下看:
2.__FILE__
表示文件的絕對(duì)路徑
通過(guò)__FILE__
能夠獲取文件的絕對(duì)路徑,并且這個(gè)路徑包含了文件名。其中需要注意的是,如果該魔術(shù)常量用在了包含文件中,那么返回的結(jié)果是被包含的文件名。
下面我們通過(guò)示例來(lái)看一下__FILE__的使用,示例如下:
<?php echo '該文件位于 " ' . __FILE__ . ' " '; ?>
輸出結(jié)果:
在上述示例中我們便是通過(guò)__FILE__完成了對(duì)文件絕對(duì)路徑的獲取。
3.__DIR__
用于表示文件所在目錄
通過(guò)__DIR__
能夠獲取文件所在的目錄,這個(gè)文件所在的目錄與__FILE__獲取文件的絕對(duì)路徑還是不一樣的,文件所在的目錄是不帶有當(dāng)前文件的文件名的。也可以把該魔術(shù)常量理解為 dirname(__FILE__)
。
下面我們通過(guò)示例來(lái)看一下__DIR__魔術(shù)常量的使用,示例如下:
<?php echo '該文件位于 " ' . __DIR__ . ' " '; echo dirname(__FILE__); ?>
輸出結(jié)果:
上述示例中我們通過(guò)兩種方法,都獲取到了當(dāng)前文件所在的目錄,一個(gè)是通過(guò)__DIR__魔術(shù)常量,另一個(gè)是dirname(__FILE__),它們倆能夠達(dá)到的效果是相同的。
4.__FUNCTION__
用于獲取當(dāng)前函數(shù)名或方法名
通過(guò)__FUNCTION__
能夠獲取當(dāng)前函數(shù)的名稱(chēng)或者方法的名稱(chēng),接下來(lái)我們通過(guò)示例來(lái)看一下__FUNCTION__魔術(shù)常量的用法。
示例如下:
<?php function test() { echo '通過(guò)__FUNCTION__獲取的函數(shù)名為:' . __FUNCTION__ ; } test(); ?>
輸出結(jié)果:
通過(guò)上述示例我們了解__FUNCTION__能夠獲取當(dāng)前函數(shù)的函數(shù)名。
5.__CLASS__
用于獲取當(dāng)前的類(lèi)名
通過(guò)__CLASS__
可以用于獲取當(dāng)前的類(lèi)名,齊總也包括了當(dāng)前類(lèi)的作用區(qū)域或命名空間。接下來(lái)我們通過(guò)示例來(lái)看一下__CLASS__的使用。
示例如下:
<?php class test { function _print() { echo '通過(guò)__CLASS__獲取的類(lèi)名為:' . __CLASS__ . "<br>"; echo '通過(guò)__FUNCTION__獲取的函數(shù)名為:' . __FUNCTION__ ; } } $t = new test(); $t->_print(); ?>
輸出結(jié)果:
通過(guò)上述示例已經(jīng)了解在PHP中可以通過(guò)__CLASS__來(lái)獲取當(dāng)前的類(lèi)名。
6.__TRAIT__
當(dāng)前的trait名稱(chēng)
通過(guò)__TEAIT__
能夠表示當(dāng)前的trait名稱(chēng),這其中包括了trait的作用區(qū)域或者命名空間。接下來(lái)我們通過(guò)示例來(lái)看一下__TRAIT__的使用。
示例如下:
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
輸出結(jié)果:
7.__METHOD__
當(dāng)前的方法名
通過(guò)__METHOD__
能夠獲取當(dāng)前的方法名,其中也包括類(lèi)名,接下來(lái)我們通過(guò)示例來(lái)看一下__METHOD__的使用方法,示例如下:
<?php function testMethod() { echo '當(dāng)前的函數(shù)名為:' . __METHOD__ . PHP_EOL . '<br/>'; } class TestMethodClass { function testMethod1() { echo '當(dāng)前的方法名和類(lèi)名為:' . __METHOD__ . PHP_EOL; } } testMethod(); $test = new TestMethodClass(); $test->testMethod1(); ?>
輸出結(jié)果:
上述示例中,我們通過(guò)__METHOD__獲取了函數(shù)名和方法名。其中方法名中包括了類(lèi)名。
8.__NAMESPACE__
當(dāng)前文件的命名空間名稱(chēng)
通過(guò)__NAMESPACE__
可以獲取當(dāng)前文件的命名空間名稱(chēng),接下來(lái)我們通過(guò)示例來(lái)看一下,示例如下:
<?php namespace MyProject; echo '命名空間為:"', __NAMESPACE__, '"'; ?>
輸出結(jié)果:
到此,關(guān)于“怎么使用PHP常用的八個(gè)魔術(shù)常量”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。