亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
什么是__CLASS__ , __METHOD____NAMESPACE__ ?
元圖中的實(shí)際用例
1。動(dòng)態(tài)記錄和調(diào)試
2。自動(dòng)服務(wù)注冊(cè)或路由
3。動(dòng)態(tài)異常消息
4。命名空間感知自動(dòng)加載或插件系統(tǒng)
警告和陷阱
最后的想法
首頁 后端開發(fā) php教程 使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________

使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________

Aug 01, 2025 am 07:48 AM
PHP Magic Constants

class__,__ -method __和__ -Namespace是PHP魔術(shù)常數(shù),可提供上下文信息用于元編程。 1。班級(jí)返回完全合格的班級(jí)名稱。 2。方法用名稱空間返回類和方法名稱。 3。名稱空間返回當(dāng)前名稱空間字符串。它們通過動(dòng)態(tài)捕獲范圍上下文,有效地用于記錄,調(diào)試,路由,異常處理和插件系統(tǒng)。在繼承方案中使用static ::類以進(jìn)行適當(dāng)?shù)撵o態(tài)綁定,并避免依靠它們來安全。這些常數(shù)增強(qiáng)了代碼內(nèi)省并減少框架和庫中的樣板。

使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________

PHP's magic constants like __CLASS__ , __METHOD__ , and __NAMESPACE__ are powerful tools for dynamic metaprogramming—writing code that can inspect or modify its own behavior at runtime.這些預(yù)定義常數(shù)提供了有關(guān)當(dāng)前類,方法和名稱空間的上下文信息,使其非常適合記錄,調(diào)試,路由和構(gòu)建靈活的框架。

讓我們探討這些常數(shù)如何工作以及如何在實(shí)際情況下有效使用它們。


什么是__CLASS__ , __METHOD____NAMESPACE__

這些是PHP中的魔術(shù)常數(shù)- 它們不是實(shí)際常數(shù),而是在編譯時(shí)評(píng)估(在特定上下文中的某些例外)以返回代表當(dāng)前范圍的字符串值。

  • __CLASS__ :返回所使用的班級(jí)的完全合格的名稱。
  • __METHOD__ :返回該方法的完全合格的名稱,包括類名稱和名稱空間。
  • __NAMESPACE__ :返回當(dāng)前名稱空間的名稱。
名稱空間應(yīng)用程序\控制器;

class usercontroller {
    公共功能show(){
        echo __class__; // app \ controllers \ usercontroller
        Echo __Method__; // app \ controllers \ usercontroller :: show
        echo __namespace__; // app \控制器
    }
}

注意: __METHOD__包括類和方法名稱,而__FUNCTION__只會(huì)返回show 。


元圖中的實(shí)際用例

1。動(dòng)態(tài)記錄和調(diào)試

當(dāng)構(gòu)建大型應(yīng)用程序時(shí),確切了解日志消息的來自何處可以節(jié)省數(shù)小時(shí)的調(diào)試。使用這些常數(shù),您可以自動(dòng)使用上下文標(biāo)記日志。

功能debuglog($ message){
    error_log(“ [$ __方法__] $ message”);
}

班級(jí)支付服務(wù)員{
    公共功能過程(){
        debuglog(“開始付款”); 
        //輸出:[PaymentProcessor :: Process]開始付款
    }
}

更好的是:包裝登錄性狀或基類以重復(fù)使用您的應(yīng)用程序。

特質(zhì)記錄器{
    受保護(hù)的功能日志($消息){
        error_log(“ [”。static :: class?!?::”。__function__。
    }
}

專家提示:在繼承量較重的代碼中使用static::class ,而不是__CLASS__ ,它尊重晚期靜態(tài)綁定。


2。自動(dòng)服務(wù)注冊(cè)或路由

框架通常將URL映射到控制器方法。您可以使用__METHOD____CLASS__自動(dòng)注冊(cè)路線或服務(wù)。

 $ router-> get('/user',[usercontroller :: class,'index']);

//稍后,內(nèi)省回調(diào)
$ callback = [usercontroller :: class,'index'];
列表($ class,$ method)= $ callback;

回聲“ $ class :: $ method中的處理請(qǐng)求”;

或者,在控制器中,自我注冊(cè)的行動(dòng):

公共功能registerRoutes(路由器$ router){
    $ prefix = strtolower(str_replace('Controller','',basename(__ class__)));
    $ router-> get(“/$ prefix”,[$ this,'index']); // /用戶
    $ router-> get(“/$ prefix/create”,[$ this,'create']);
}

這會(huì)降低樣板并保持路由保持一致。


3。動(dòng)態(tài)異常消息

通過包括精確的位置上下文來改善錯(cuò)誤消息。

如果(!$ user){
    拋出新的usernotfoundexception(
        “未找到用戶”。 __方法__ 。 “在線”。 __線__
    );
}

結(jié)果:

 USERNOTFOUNDEXCEPTION:在App \ Controllers \ UserController中找不到的用戶::在第42行中顯示

這比通用消息更有幫助。


4。命名空間感知自動(dòng)加載或插件系統(tǒng)

使用__NAMESPACE__動(dòng)態(tài)解析類路徑或加載配置文件。

 $ configfile = __dir__。 '/'。 __NAMESPACE__。 '/config.php';
if(file_exists($ configfile)){
    包括$ configfile;
}

或在插件系統(tǒng)中:

 $ pluginclass = __namespace__。 '\插件\\'。 ucfirst($ name)。 “插件”;
if(class_exists($ pluginClass)){
    返回新的$ pluginClass();
}

這使模塊化,可重復(fù)使用的組件適應(yīng)其環(huán)境。


警告和陷阱

  • __CLASS__ , __METHOD____NAMESPACE__在編譯時(shí)解決,因此除非使用static::class ,否則它們不會(huì)在繼承的類中更改。
  • 內(nèi)部關(guān)閉, __METHOD__是指封閉方法,而不是封閉方法。
  • 在全局名稱空間中, __NAMESPACE__是一個(gè)空字符串。
  • 避免依靠它們來獲得對(duì)安全敏感的邏輯 - 他們進(jìn)行內(nèi)省而不是訪問控制。

最后的想法

Used wisely, __CLASS__ , __METHOD__ , and __NAMESPACE__ let you write smarter, self-aware code.它們?cè)谏舷挛闹匾目蚣?,庫和調(diào)試工具中特別有價(jià)值。

您無需過度工程師 - 啟動(dòng)?。簩⑺鼈兲砑拥饺罩局?,構(gòu)建更智能的異?;蚝喕酚?。模式將自然增長。

基本上,如果您正在編寫需要“知道它在哪里”的代碼,那么這些魔術(shù)常數(shù)就是您的朋友。

以上是使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

掌握相對(duì)路徑:__dir__和__file__的功能 掌握相對(duì)路徑:__dir__和__file__的功能 Jul 30, 2025 am 05:35 AM

DIR和FILE是PHP中的魔術(shù)常量,能有效解決相對(duì)路徑在復(fù)雜項(xiàng)目中導(dǎo)致的文件包含錯(cuò)誤。1.FILE返回當(dāng)前文件的完整路徑,__DIR__返回其所在目錄;2.使用DIR可確保include或require總是相對(duì)于當(dāng)前文件執(zhí)行,避免因調(diào)用腳本不同而導(dǎo)致路徑錯(cuò)誤;3.可用于可靠包含文件,如require_onceDIR.'/../config.php';4.在入口文件中定義BASE_DIR常量以統(tǒng)一項(xiàng)目路徑管理;5.安全加載配置文件,如$config=requireDIR.'/config/dat

魔術(shù)常數(shù)如何增強(qiáng)您的基于特質(zhì)的架構(gòu) 魔術(shù)常數(shù)如何增強(qiáng)您的基于特質(zhì)的架構(gòu) Jul 29, 2025 am 04:07 AM

在trait-based架構(gòu)中,魔法常量并非反模式,而是可作為有意設(shè)計(jì)的編譯時(shí)標(biāo)記或優(yōu)化提示。1.魔法常量可用作版本開關(guān),如通過constVERSION:u8區(qū)分序列化行為,使下游代碼依據(jù)版本條件編譯;2.可作為標(biāo)簽優(yōu)化動(dòng)態(tài)派發(fā),如為trait實(shí)現(xiàn)分配唯一TAG常量,實(shí)現(xiàn)快速路徑匹配并可能被編譯器內(nèi)聯(lián)消除;3.可替代RTTI提供輕量級(jí)類型區(qū)分,如通過編譯時(shí)哈希生成類型指紋,避免運(yùn)行時(shí)類型信息開銷;4.使用時(shí)需避免真正“魔法”,應(yīng)統(tǒng)一定義、充分文檔化,并優(yōu)先使用枚舉或位標(biāo)志增強(qiáng)可讀性,如用enum

通過__line __,__file__和__function _______________________________________________________________________________________________________________________________ 通過__line __,__file__和__function _______________________________________________________________________________________________________________________________ Jul 29, 2025 am 03:21 AM

theSostEffectiveDebuggingTrickinc/c Isusing the-inmacros__file __,__行__和__function__togetPreciseErrorContext.1 .__ file __ file __providestHecurrentsourcefile'spathasastring.2 .__ line__ line__ line__givestHecurrentLineNumberenneNumberennumberennumberennumber.___________________________3

構(gòu)建防彈自動(dòng)加載器:深入研究__DIR__常數(shù) 構(gòu)建防彈自動(dòng)加載器:深入研究__DIR__常數(shù) Jul 31, 2025 pm 12:47 PM

dirisessential forbuildingReliablephpautoloadersbecapeitProvideStable,絕對(duì)epathtothtothecurrentfile'sdirectory,可確保ConsistentBehaviorActractRospDifferentenVerentenments.1.unlikeLikeLikeLikeLikeLikeLikeLativePathSorgatSorgetCwd(),Diriscontext-Expontext-Indeptertentententententententententertentertentertriprip,disternepertriper,ingingfailfip

__Trait__的上下文魔術(shù):它在課堂內(nèi)的行為 __Trait__的上下文魔術(shù):它在課堂內(nèi)的行為 Jul 29, 2025 am 04:31 AM

TRAITisamagicconstantinPHPthatalwaysreturnsthenameofthetraitinwhichitisdefined,regardlessoftheclassusingit.1.Itisresolvedatcompiletimewithinthetrait’sscopeanddoesnotchangebasedonthecallingclass.2.UnlikeCLASS__,whichreflectsthecurrentclasscontext,__TR

使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________ 使用__Class__,__Method__和__ -Namespace________________________________________________________________________________________________________________________________________________________________________ Aug 01, 2025 am 07:48 AM

CLASS__,__METHOD__,and__NAMESPACEarePHPmagicconstantsthatprovidecontextualinformationformetaprogramming.1.CLASSreturnsthefullyqualifiedclassname.2.METHODreturnstheclassandmethodnamewithnamespace.3.NAMESPACEreturnsthecurrentnamespacestring.Theyareused

通過上下文魔術(shù)常數(shù)增強(qiáng)您的錯(cuò)誤記錄策略 通過上下文魔術(shù)常數(shù)增強(qiáng)您的錯(cuò)誤記錄策略 Aug 01, 2025 am 07:47 AM

Contextualmagicconstantsarenamed,meaningfulidentifiersthatprovideclearcontextinerrorlogs,suchasUSER_LOGIN_ATTEMPTorPAYMENT_PROCESSING.2.Theyimprovedebuggingbyreplacingvagueerrormessageswithspecific,searchablecontext,enablingfasterrootcauseidentificat

魔術(shù)常數(shù)神秘:匿名功能和關(guān)閉的行為 魔術(shù)常數(shù)神秘:匿名功能和關(guān)閉的行為 Jul 29, 2025 am 04:41 AM

MagicconstantsinPHPareresolvedatcompiletimebasedonsourcecodelocation,notruntimecontext.2.Insideanonymousfunctions,FUNCTIONreturnsanemptystringbecauseclosureslackaname.3.FUNCTION__,__METHOD__,and__CLASSreflecttheenclosingfunction,method,orclasswhereth

See all articles