Jump to content

Question sur l'override


Recommended Posts

Bonjour,

 

J'ai besoin de modifier quelques fonctions de la classe Product.php.

 

Dans l'override, est-ce que je dois mettre toute la classe Product, ou bien simplement les fonctions à modifier ?

 

Dans le cas d'une mise à jour, si les fonctions surchargées ont été modifiées par la team, est-ce que les nouveautés seront prises en compte ?

 

Merci.

Link to comment
Share on other sites

Lorsque tu utilise l'override tu doit uniquement ajouter les méthode que tu veut surchargé. Pour que les modifications de la TEAM suite à un update soit prise en compte, il faut de préférence utiliser le "parent::nom_de_la_methode_surchager();"

 

Ex:

Dans classes/Product.php :

 public function deleteCartProducts()
 {
return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_product` WHERE  `id_product` = '.(int)($this->id));
 }

 

Si tu veut surchargé uniquement cette méthode, voici le principe :

 

Dans overrides/classes/Product.php :

 

class Product extends ProductCore
{
  public function deleteCartProducts()
  {
   $return = parrent::deleteCartProducts();

   // Ici tu exécute ton nouveau code

   return $return;
  }
}

 

Loïc.

Link to comment
Share on other sites

Salut Ninja of Web,

 

Merci pour ton explication.

 

Cependant dans ton exemple la fonction deleteCartProducts() d'origine ne fait qu'une seule opération (un DELETE en bdd).

Dans ce cas là effectivement il est intéressant de faire un "parent::nom_de_la_methode_surchager();" et rajouter le nouveau code à la suite.

 

Mais les modifications apportées ne sont pas forcément à la fin de la méthode à surcharger. Elles peuvent être aussi au milieu. C'est mon cas par exemple je dois modifier la méthode productImport() de la classe AdminImportControllerCore().

 

Tu vois ce que je veux dire ?

Link to comment
Share on other sites

Donc le code de la méthode native sera ignoré, et c'est mon code qui prendra le dessus n'est ce pas ?

 

Dans le cas d'une mise à jour de cette méthode, je ne pourrais pas bénéficier des correctifs. Il faudra récupérer le nouveau code et le modifier à nouveau dans l'override.

Edited by chris13 (see edit history)
Link to comment
Share on other sites

Exactement !

 

Si c'est bien de cette méthode que tu parle, la meilleur des solutions et de faire un copier coller de la méthode d'origine vers ton override comme le dit Johann.

 

Essaye de rajouter le minimum de ligne dans cette méthode pour éviter les futurs conflit quand elle sera à jour... (Ex: crée de nouvelles méthodes qui ferons les modifications que tu désire)

 

Ah cette méthode ! Je l'ai débuguer des 10ene de fois !

 

Bon courage !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...