WebHU - Programozási kérdések és válaszok

attribútum lekérése az objektumról az entitás doktrínában

Tehát van ez a funkcióm:

MyProject\Bundle\Entity\Audio;

/**
 * 
 * @return string
 */ 
public function getStudioName()
{
   return $this->getStudio()->getNom();
}

amelynek a nom attribútumot kellene lekérnie a Studio objektumból.

Ezeket így határozzák meg:

/**
 * @var \MyProject\Bundle\Entity\Device
 */

private $studio;

...

/**
 * Get studio
 *
 * @return \MyProject\Bundle\Entity\Device
 */
public function getStudio()
{
    return $this->studio;
}

És a ->getNom is csak egy alap hozam, ami jól működik.

Tehát a következő hibaüzenetet kapom:

Hiba: A getNom() tagfüggvény hívása nem objektumon

Olvastam a lusta betöltésről, és megértem, hogy a $this->getStudio() miért ad proxyt a tényleges Device objektum helyett, de nem tudok továbbmenni és ezután a getNom()-ot használni... Próbáltam hozzáadni a fetch : EAGER-et, hogy elkerüljem a lusta betöltést, de még mindig nem működik.

Bármilyen ötletet ?


  • Átadnád az egész entitás kódját? Úgy tűnik, hogy a $studio tulajdonság NULL lehet. Ilyen esetben ellenőriznie kell, hogy be van-e állítva. Ha nem, adja vissza a NULL értéket. 23.10.2015
  • Hűha sikerült. Nagyon köszönöm ! (Csak 2 órát töltöttem ezzel...) Íme a kód: /** * * @return string */ public function getStudioName() { $data = $this-›getStudio(); if(!is_null($adat)) { return $data-›getNom(); } return null; } 23.10.2015
  • Szuper, örülök, hogy segített :). Elküldtem a teljes választ, így le lehet zárni. 23.10.2015

Válaszok:


1

Úgy tűnik, hogy a $studio tulajdonság NULL lehet. Ilyen esetben ellenőriznie kell, hogy be van-e állítva. Ha nem, adja vissza a NULL értéket.

A valódi kód így nézne ki:

<?php 

public function getStudioName(): ?string
{
    return $this->studio ? $this->studio->getName() : null;
}
23.10.2015
  • Azt hiszem, ez egy jobb módszer annak tesztelésére, hogy a $this-›studio egy olyan osztály példánya-e, amely megvalósítja a getName() metódust. if ($this->studio instanceof MyProject\Bundle\Entity\Audio) 24.10.2015
  • A $studio csak NULL vagy Audio lehet. Az értéket egy másik helyen, például konstruktorban vagy beállítóban kell ellenőrizni típusjellel. 24.10.2015
  • @scoolnico Köszönöm a tippet, frissítettem a kódot inline feltételekkel. 19.02.2019
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..