Petite note, si vous avez besoin de surcharger un getter ou un setter, vous avez probablement tenté d'écrire ça :
// /lib/model/doctrine/MonModel.class.php
class MonModel extends BaseMonModel
{
// getter
public function getMaPropriete()
{
// faire quelquechose
return parent::getMaPropriete();
}
// Et pour le setter
public function setMaPropriete( $value )
{
// faire quelquechose
parent::setMaPropriete($value);
}
}
Et obtenu une magnifique erreur de récursion : Fatal error: Maximum function nesting level of '100' reached, aborting!Or en fesant ça, vous passerez par la fonction "magique" __call qui va (bêtement) rééxécuter votre getter/setter à l'infini...
Il en va de même si vous tentez un $this->ma_propriete...
Pour éviter ce passage par __call, vous devez réécrire les setter/getter de cette façon, en utilisant les méthodes _get() et _set() : :
// /lib/model/doctrine/MonModel.class.php
class MonModel extends BaseMonModel
{
// getter
public function getMaPropriete()
{
// faire quelquechose
return $this->_get('ma_propriete');
}
// Et pour le setter
public function setMaPropriete( $value )
{
// faire quelquechose
$this->_set('ma_propriete', $value);
}
}
Voilà
Infos
Surcharger un getter/setter du modèle dans symfony.
- Niveau : Inité
- Catégorie : Symfony 1.4
- Publié le : 25 mai 2011
- Dernière Mise à jour : 25 mai 2011
- Notions abordées :
par Geraud
site : http://astase.com
le 04 décembre 2011 à 14:40:29
Bonjour,
Il ne faut pas oublier de retourner le retour de _set() pour avoir au comportement standard (et ainsi pouvoir faire des enchainements d'appels de méthodes par exemple)
En gros :
public function setMaPropriete( $value )
{
// faire quelquechose
return $this->_set('ma_propriete', $value);
}