Détail du message 44249.12

Message numéro 12 dans le sujet Extensibilité de RBS Change : structure des données.

  • 44249.12 en réponse à 44249.11 écrit par jbarnouin

    31/07/2012 17:24


    Jean-Michel
    Titre : Community Manager
    Rang : Expert
    Bonjour,

    J'aborderai ici deux manières de faire, ne sachant quel impact cela aura sur votre projet ; l'AOP et l'injection. Il faut préférer l'injection à l'AOP, et si pour des raisons historiques ou de volume d'AOP il est impossible de retirer l'AOP, alors on passera par de l'AOP de type replace.

    Cas de l'AOP
    Lorsque l'on fait de l'AOP, le fichier "aop.xml" doit être déclaré dans le dossier config du projet et être de la forme :
    <?xml version="1.0" encoding="UTF-8"?>
    <aop>
    	<replace pointcut="website_MenuItemPrintFunction" class="monmodule_MaClasseAMoua" />
    </aop>
    

    La classe PHP (située dans monmodule/lib/aop) doit ensuite être du style :
    <?php
    class monmodule_MaClasseAMoua extends website_MenuItemPrintFunction
    {
        public function methodToOverride()
        {
                   .......
        }
    }
    

    Puis on termine par un update-autoload suivi d'un compile-aop. Attention chaque modification de la classe imposera un compile-aop.


    Cas de l'injection
    IMPORTANT : L'injection n'est valable que sur les classes de type services pour le moment.
    On va déclarer l'injection dans le fichier "project.xml" comme suit :
    <?xml version="1.0" encoding="utf-8"?>
    <project>
    ...
      <config>
        <injection>
          <entry name="website_MenuItemPrintFunction">monmodule_MaClasseAMoua</entry>
        </injection>
      </config>
    


    En ce qui concerne la classe PHP, il n'y a pas de différence.


    Puis on termine par un update-autoload suivi d'un compile-aop.

    Ces quelques manipulations devraient être suffisantes pour vous permettre de faire vos modifications.

    Je ne vois pas de contre-indication pour utiliser votre injection dans les deux cas à partir du moment où l'on attend la même chose et que le code le permet, pourquoi le dupliquer? ;)

    Édité par Jean-Michel 01/08/2012 16:31


    Pour une meilleure réponse, pensez à indiquer la version sur laquelle vous rencontrez des difficultés, ainsi que son type (CMS ou eCommerce core).
    Pour tout problème d'installation indiquez le nom de l'hébergeur et s'il s'agit d'un serveur mutualisé ou dédié.
 
1367 membres
Aucun membre connecté