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

目錄
__TRAIT__實(shí)際是什麼
__TRAIT__在類中的行為(使用特徵時(shí))
示例:使用相同特徵的多個(gè)類
為什麼重要:調(diào)試和記錄
關(guān)鍵要點(diǎn)
一個(gè)怪癖:混音as
首頁(yè) 後端開(kāi)發(fā) php教程 __Trait__的上下文魔術(shù):它在課堂內(nèi)的行為

__Trait__的上下文魔術(shù):它在課堂內(nèi)的行為

Jul 29, 2025 am 04:31 AM
PHP Magic Constants

特徵是PHP中的魔術(shù)常數(shù),它總是返回定義其定義性狀的名稱,而不論使用該類別如何使用它。 1。在特徵範(fàn)圍內(nèi)的編譯時(shí)間解決,並且不會(huì)根據(jù)調(diào)用類別更改。 2。與反映當(dāng)前類上下文的class__不同,__ Trait仍然固定在特徵的名稱上。 3。這對(duì)於通過(guò)提供一致的性狀標(biāo)識(shí)來(lái)調(diào)試,記錄和錯(cuò)誤報(bào)告很有用。 4。它不能在特徵外使用,如果嘗試導(dǎo)致致命錯(cuò)誤。 5。與“ AS”的方法混疊不影響性狀__的值,因?yàn)樘蒯绲膬?nèi)部環(huán)境保持不變。因此,__ Trait可靠地自我確定了特徵,從而確保了不同類別的可預(yù)測(cè)行為。

__Trait__的上下文魔術(shù):它在課堂內(nèi)的行為

__TRAIT__ isn't a built-in PHP constant — you're likely thinking of __TRAIT__ , which is a magical constant in PHP, similar to __CLASS__ , __METHOD__ , or __FUNCTION__ .它專門用於特質(zhì)的上下文,並了解其在類(以及特徵本身)內(nèi)的行為表現(xiàn)出一些微妙但有力的上下文行為。

讓我們分解__TRAIT__的“上下文魔術(shù)”,以及當(dāng)特徵在課堂內(nèi)使用時(shí)的作用。


__TRAIT__實(shí)際是什麼

__TRAIT__是一個(gè)神奇的常數(shù),它返回其使用的特徵名稱為字符串。它在特質(zhì)的身體內(nèi)部只是有意義的。就像__CLASS__給您當(dāng)前的類名稱一樣, __TRAIT__可以為您提供當(dāng)前特質(zhì)的完全合格的名稱 - 但僅來(lái)自特徵。

特質(zhì)mytrait {
    public函數(shù)getTraitName(){
        返回__ trait__;
    }
}

類myclass {
    使用mytrait;
}

$ obj = new myClass();
echo $ obj-> getTraitName(); //輸出:mytrait

到目前為止,這麼簡(jiǎn)單。但這是魔術(shù)和混亂開(kāi)始的地方。


__TRAIT__在類中的行為(使用特徵時(shí))

即使將特徵的方法注入了類, __TRAIT__卻不會(huì)根據(jù)類別的類別進(jìn)行更改。它在編譯時(shí)間而不是運(yùn)行時(shí)解決,並且始終涉及該特質(zhì)自己的名字 - 無(wú)論哪個(gè)類都使用。

示例:使用相同特徵的多個(gè)類

特質(zhì)記錄器{
    公共功能日誌($消息){
        迴聲'['。 __ Trait__。 ']''。 $消息。 php_eol;
    }
}

類用戶{
    使用Logger;
}

類產(chǎn)品{
    使用Logger;
}

$ user = new user();
$ product = new Product();

$ user-> log(“用戶創(chuàng)建”); // [logger]創(chuàng)建的用戶
$ product-> log(“添加產(chǎn)品”); // [logger]添加了產(chǎn)品

即使在不同類別中使用了Logger , __TRAIT__在兩種情況下仍可以評(píng)估'Logger' 。它不會(huì)成為'User''Product' 。

這與__CLASS__不同,__class __會(huì)根據(jù)呼叫上下文而改變:

特質(zhì)testContext {
    公共功能ShowClass(){
        Echo“ class:”。 __班級(jí)__ 。 “ \ n”;
    }

    公共功能ShowTrait(){
        迴聲“特質(zhì):”。 __ Trait__。 “ \ n”;
    }
}

班級(jí)示例{
    使用TestContext;
}

$ e = new示例();
$ e-> showclass(); //班級(jí):示例
$ e-> showtrait(); //特質(zhì):testContext

因此, __CLASS__反映了該方法所調(diào)用的類別,但是__TRAIT__反映了其定義的特徵- 無(wú)論其使用何處。


為什麼重要:調(diào)試和記錄

__TRAIT__的一致行為使其在以下方面非常有用:

  • 日誌記錄:即使在許多類中共享日誌線,您也可以識(shí)別日誌線的來(lái)源。
  • 錯(cuò)誤報(bào)告:拋出有關(guān)哪種特徵生成錯(cuò)誤的上下文的異常。
  • 動(dòng)態(tài)行為:根據(jù)性狀名稱有條件執(zhí)行代碼(罕見(jiàn),但可能)。

例如:

特質(zhì)SecureAccess {
    公共功能checkAccess(){
        如果(!$ this-> currentuserhasaccess()){
            投擲新\異常(“特徵中拒絕的訪問(wèn):”。__ trait__);
        }
    }
}

這給出了比硬編碼特徵名稱更清晰的錯(cuò)誤消息。


關(guān)鍵要點(diǎn)

  • ?__ __TRAIT__編譯時(shí)間內(nèi)解決特徵內(nèi)部
  • ?它總是返回特徵的名稱,從來(lái)沒(méi)有使用過(guò)它。
  • ?不能在特徵之外使用它 - 它是未定義的(導(dǎo)致致命錯(cuò)誤)。
  • ?與__CLASS__不同,它不會(huì)根據(jù)類上下文進(jìn)行更改。

因此,儘管__CLASS__對(duì)呼叫者是上下文,但__TRAIT__自我指出和固定的。


一個(gè)怪癖:混音as

即使您通過(guò)use MyTrait::method as myMethod;__TRAIT__仍然可以使用相同的工作 - 因?yàn)樵摲椒ㄉ眢w沒(méi)有改變。

特徵apihelper {
    公共功能getClient(){
        迴聲“來(lái)自特質(zhì):”。 __特徵__;
    }
}

類legacySystem {
    使用apihelper {getClient作為getOldClient; }
}

$ obj = new LegacySystem();
$ obj-> getOldClient(); //仍然打?。簛?lái)自特質(zhì):apihelper

重命名該方法不會(huì)影響性狀代碼的內(nèi)部上下文。


簡(jiǎn)而言之, __TRAIT__是一種小而強(qiáng)大的工具,無(wú)論使用何處,都可以保持其身份。它的行為是一致的,可預(yù)測(cè)的,並且與特徵自己的定義有著深遠(yuǎn)的關(guān)係,而不是採(cǎi)用它的類別。

基本上,這就像一個(gè)特質(zhì)說(shuō):“無(wú)論您在哪裡使用我,我永遠(yuǎn)都知道我是誰(shuí)。”

以上是__Trait__的上下文魔術(shù):它在課堂內(nèi)的行為的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)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脫衣器

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整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

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

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

構(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

掌握相對(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

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

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

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

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

通過(guò)__line __,__file__和__function _______________________________________________________________________________________________________________________________ 通過(guò)__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

通過(guò)__dir__解決複雜應(yīng)用中的路徑歧義 通過(guò)__dir__解決複雜應(yīng)用中的路徑歧義 Jul 29, 2025 am 03:51 AM

使用__DIR__可以解決PHP應(yīng)用中的路徑問(wèn)題,因?yàn)樗峁┊?dāng)前文件所在目錄的絕對(duì)路徑,避免相對(duì)路徑在不同執(zhí)行上下文下的不一致。 1.DIR__始終返回當(dāng)前文件的目錄絕對(duì)路徑,確保包含文件時(shí)路徑準(zhǔn)確;2.使用__DIR.'/../config.php'等方式可實(shí)現(xiàn)可靠文件引用,不受調(diào)用方式影響;3.在入口文件中定義APP_ROOT、CONFIG_PATH等常量,提昇路徑管理的可維護(hù)性;4.將__DIR__用於自動(dòng)加載和模塊註冊(cè),保證類和服務(wù)路徑正確;5.避免依賴$_SERVER['DOCUMENT

魔術(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.魔法常量可用作版本開(kāi)關(guān),如通過(guò)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ū)分,如通過(guò)編譯時(shí)哈希生成類型指紋,避免運(yùn)行時(shí)類型信息開(kāi)銷;4.使用時(shí)需避免真正“魔法”,應(yīng)統(tǒng)一定義、充分文檔化,並優(yōu)先使用枚舉或位標(biāo)誌增強(qiáng)可讀性,如用enum

See all articles