溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么使用PHP常用的八個(gè)魔術(shù)常量

發(fā)布時(shí)間:2021-11-03 15:34:24 來(lái)源:億速云 閱讀:130 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“怎么使用PHP常用的八個(gè)魔術(shù)常量”,在日常操作中,相信很多人在怎么使用PHP常用的八個(gè)魔術(shù)常量問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用PHP常用的八個(gè)魔術(shù)常量”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

怎么使用PHP常用的八個(gè)魔術(shù)常量

魔術(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

在上述示例中,我們通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

在上述示例中我們便是通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

上述示例中我們通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

上述示例中,我們通過(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é)果:

怎么使用PHP常用的八個(gè)魔術(shù)常量

到此,關(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í)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

php
AI