Mein Hintergrund ist in Propel, also hatte ich gehofft, es wäre eine einfache Sache, einen magischen Getter in einem Doctrine_Record (sfDoctrineRecord) außer Kraft zu setzen, aber ich bekomme entweder einen Segfault oder die Override-Methode wird einfach zugunsten der ignoriert eins in der Oberklasse.
%Vor%Was ist die richtige Doctrine-Methode zum Erweitern / Überschreiben von Methoden für eine Instanz von Doctrine_Record (über sfDoctrineRecord extends Doctrine_Record)? Das muss machbar sein ... oder sollte ich mir die Template-Dokumentation anschauen?
Danke, Brian
Ich bin mir nicht sicher, was Sie genau genau tun wollten, aber hier sind einige Hinweise:
Doctrine (mit ATTR_AUTO_ACCESSOR_OVERRIDE
-Attribut aktiviert, welches ist von Symfony aktiviert) ermöglicht es Ihnen, die Getter bestimmter Komponentenspalten außer Kraft zu setzen, indem Sie getColumnName
-Methoden in der Modellklasse definieren. Deshalb kann Ihre getDisplayName
-Methode auf eine Endlosschleife fallen, die normalerweise zu einem segfault führt.
Um direkt auf den Spaltenwert zugreifen zu können (unter Umgehung der benutzerdefinierten (get | set) -Ter), müssen Sie die Methoden _get('column_name')
und _set('column_name')
verwenden, die von Doctrine_Record
class definiert sind.
Alle Aufrufe von $obj->getSomething()
, $obj->something
und $obj['something']
sind tatsächlich magisch. Sie werden auf $obj->get('something')
"umgeleitet", was nur eine reale Möglichkeit ist, auf Modelldaten zuzugreifen.
Tags und Links php symfony1 doctrine getter-setter extending