2009-06-03 4 views
4

J'ai le modèle suivant:Pourquoi surcharger Doctrine_Record :: save() me donne une erreur standard stricte dans Symfony 1.2?

class Model extends BaseModel 
{ 
    public function save($conn = null) 
    { 
     if(!$this->getId()) 
     { 

     //do stuff 

    } 
    return parent::save($conn); 

    } 
} 

Je me sens comme je follwing la description de l'API de signature Doctrine_Record::save() (sauf la parenthèse bizarre je me donne une erreur de syntaxe ...).

Quand je lance ce code, il fonctionne bien mais je reçois l'avertissement suivant:

Strict Standards: Declaration of Model::save() should be compatible with that of Doctrine_Record::save() in $ROOT/lib/model/doctrine/Model.class.php on line 6 

Je tourne habituellement les rapports d'erreurs à ERROR_ALL et essayer de coller avec un code libre d'avertissement. Cela me dérange. Je vérifie tout le code source de Doctrine et salue "save ("), dessus, essayant une signature après l'autre Rien Rien ... La première fois que PHP m'a eu pour être trop permissive, étrange hu :-)?

+4

n'êtes-vous pas censé utiliser des crochets pour ce genre de choses? http://www.doctrine-project.org/documentation/manual/1_1/en/event-listeners:record-hooks –

+0

Bon point. C'est beaucoup plus propre. –

+0

vous deux sauvé ma journée! – Throoze

Répondre

16

La signature correcte pour la méthode de sauvegarde doit être:

public function save(Doctrine_Connection $conn = null) 
+0

Merci! Bien sûr, j'aurais dû l'avoir. Maintenant, vous pouvez utiliser un objet en PHP pour appliquer un type (mais pas un type de base comme un entier si je me souviens bien). On se sent comme PHP essaie de rattraper Java :-p –

0

Sur une note côté: Sur d'autres fonctions que vous pouvez obtenir cette erreur mais vous aurez besoin d'utiliser la fonction ($ événement) à la place de ce qui précède .

Questions connexes