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