Überschreiben von Doctrine_Record (sfDoctrineRecord) Instanzmethoden in Doctrine PHP Symfony

8

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

    
Brian 06.04.2010, 17:57
quelle

4 Antworten

7

Probieren Sie die Methoden _get und _set aus.

    
Tyaga 06.04.2010, 19:17
quelle
8

Ich bin mir nicht sicher, was Sie genau genau tun wollten, aber hier sind einige Hinweise:

  1. 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.

  2. 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.

  3. 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.

develop7 06.04.2010 19:58
quelle
5

Das funktioniert:

%Vor%     
Brian 06.04.2010 21:12
quelle
2

Lehre konfigurieren:

%Vor%

dann:

%Vor%     
takeshin 06.04.2010 20:01
quelle