Doctrine: "virtuális" tulajdonság létrehozása
Eddig a Propelt használtam, és most szeretnék áttérni Doctrine-ra. A problémám az, hogy jelen esetben van egy payoff tábla. Tömören az alábbi tulajdonságokkal bír:Propel alatt létre tudtam hozni egy valójában nem létező tulajdonságot, melynek neve: number . Ez olyasmi, mint a számlaszám, a létrehozás éve + '-' + id, nullákkal feltöltve. Pl:Ennek megvalósítása egyszerű volt, a Payoff osztályban létrehoztam egy getNumber() fv. Ez Doctrine alatt sem lenne probléma, ami viszont az, hogy így nem tudom "egységesen" kezelni a objektum tulajdonságait. Propel alatt:Doctrine alatt? :Van vmi tapasztaltabb embernek erre a "problémára" vmi szebb megoldása? Nincs vmi kiegészítés Doctrine alá, hogy a generált fájlokba belekerüljenek a get[oszlopnév]() fv-ek? Nekem az a megoldás sokkal szimpatikusabb volt. A set fv-eket felülbírálva lehetett módosítani az adaton mielőtt az adatbázisba kerül és get fv-eknél pedig kiolvasásánál lehetett vele játszani, esetleg létre lehetett hozni ilyen "vírtuális" tulajdonságokat is, amik az adatbázisban valójában nem léteztek, de a modell rendelkezett vele.
■ payoff:
id: serial primary key
created: datetime
...
id = 23
created = '2009-03-20'
--------------------------
number = 2009-000023
echo $obj->getId();
echo $obj->getCreated('Y-m-d');
echo $obj->getNumber();
echo $obj->id;
echo $obj->created;
echo $obj->getNumber();
Átmeneti megoldásként
Ez a megoldás "lassú". A Base osztályokba belegenerálva viszont gyorsabb is lenne a $obj->getVar(), mint a $obj->var, mivel az utóbbi a szintén mágikus __get() fv-t használja... Az a gond, hogy a Doctrine_Record sok "getes" fv-t tartalmaz alapból, pl a getLastModified() bezavarhat egyes tábláknál így nehéz "általánosítani" ezt a módszert, anélkül, hogy ne kellene alaposan átírni az alap kódot :-/
Szerintem...
Erre én is gondoltam...
Hydration listener? Lehet en
Lehet en ertettem felre a dolgot, de nem valami ilyesmit szeretnel?
symfony?
Részben "nyert"