第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

識(shí)別哪些類具有注釋并獲取也具有注釋的屬性的值

識(shí)別哪些類具有注釋并獲取也具有注釋的屬性的值

PHP
qq_花開(kāi)花謝_0 2023-08-06 14:39:47
我最初的想法是創(chuàng)建一個(gè)格式生成器。比如寫(xiě)下一些文本,然后寫(xiě)下一些用大括號(hào)括起來(lái)的變量,然后寫(xiě)下那些具有實(shí)際值的變量,我想讓我的系統(tǒng)知道哪些類可以用于格式化以及系統(tǒng)可以使用它的哪些屬性。讓我們假設(shè),在此圖像中,始終檢索 id 為 1 的對(duì)象,并且 id 始終存在(忘記繪制它)我想要做的是讓一個(gè)或多個(gè)帶有注釋的類,然后識(shí)別哪些類具有該注釋,并讓我知道它們是哪些類。在上面的示例中,那些可用的類應(yīng)該在下拉列表中/*?* @Format*/public class Pizza {? ? public $hasCheese;? ? /*? ? ?* @FormatField("pizzaPrice")? ? */? ? public $price;假設(shè)我有一堆類,并且唯一一個(gè)有我的注釋Format,并且它的一些屬性有注釋,F(xiàn)ormatField那么我希望有一種方法讓我知道類似的內(nèi)容"It looks like the class Pizza can be used in a Format",然后哪些屬性可用于格式化,哪些屬性然后,以FormatField某種方式通過(guò)別名檢索該屬性的值pizzaPrice我寫(xiě)了這種偽代碼,希望能更好地說(shuō)明我想學(xué)的東西var availableClasses = getClassesThatHaveFormatAnnotation();foreach (availableClasses as availableClass) {? ? var properties = availableClass.findFormatFields()? ? print("Looks like the " + availableClass->name + " class has the Format annotation")? ? foreach (properties as property) {? ? ? ? print("Field available: " + property.name)? ? ? ? print("Value: " + property.value)? ? }}var pizza = findPizzaById(1);有了這個(gè)披薩,我希望能夠通過(guò)其別名僅訪問(wèn)上面有 @FormatField 的屬性,例如 {{pizzaPrice}} 但 {{hasCheese}} 不應(yīng)該工作,因?yàn)樗鼪](méi)有 @FormatField 注釋;
查看完整描述

1 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

以下是查找實(shí)體及其帶注釋的屬性的代碼示例。您可以將結(jié)果放在某處。但是,如果不替換帶注釋的實(shí)體,您將可以使用所有屬性,因此也許您需要?jiǎng)?chuàng)建一個(gè)偵聽(tīng)器,它將偵聽(tīng) symfony 內(nèi)核事件并修改您的響應(yīng)數(shù)據(jù)。


    $annotationReader = new \Doctrine\Common\Annotations\AnnotationReader();


    $entities = [];

    foreach ($entities as $entity) {

        $reflectionClass = new \ReflectionClass($entity);

        if (empty($annotationReader->getClassAnnotation($reflectionClass, CustomAnnotation::class))) {

            continue;

        }


        foreach ($reflectionClass->getProperties() as $property) {

            if (empty($annotationReader->getPropertyAnnotation($property, CustomPropertyAnnotation::class))) {

                continue;

            }


            $propertyName = $property->getName();

            $propertyValue = $property->getValue($entity);

        }

    }


查看完整回答
反對(duì) 回復(fù) 2023-08-06
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)