Appel aux classes Joomla! 4

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Appel aux classes Joomla! 4

    Bonjour à tous,

    En testant la version 4.0 dev, je viens de m'apercevoir par exemple que les classes semblent maintenant exiger pour leur appel à un antislash pour ne pas avoir d'erreur.
    Par exemple,
    protected function addToolbar()
    {
    \JToolbarHelper::title(\JText::_('COM_ADMIN_HELP') , 'support help_header');
    }
    Si j'ai réussi ce matin à installer Joaktree sur une version 4, pour tests, impossible (idem pour JCE) d'accéder à la gestion avec un message d'erreur
    Class JToolbarHelper not found
    parce que le code est écrit sans antislash
    JToolBarHelper::title( JText::_( 'COM_JOAKTREE_CONTROL_PANEL' ), 'joaktree' );
    Apparemment, Joomla! 3.7 accepte déjà les deux syntaxes, mon projet est donc de voir, si jamais je décide de continuer à m'occuper de Joaktree, si ce changement peut déjà être appliqué à la version actuelle sans générer d'erreurs.

    La question est donc de savoir comment, dans des milliers de lignes de code, repérer toutes ces occurrences des diverses classes pour y ajouter cet antislash, puisqu'il semble maintenant indispensable. Autant une fois une erreur repérée, il est facile de faire une modification en masse par remplacement de la chaîne, autant je sèche quant à la manière de retrouver toutes les lignes à modifier.

    Comment procédez ou procéderiez-vous ?
    Merci de vos conseils,
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Re : Appel aux classes Joomla! 4

    Problème après recherches ! Je viens de remarquer qu'en fait, ce n'est peut-être pas l'antislash, mais la casse du nom de la classe qui change, avec le b qui est parfois en majuscules, parfois en minuscules dans JToolbarHelper en version 3, et apparemment toujours en minuscules dans la 4.0 dev, ne supportant apparemment pas que cette lettre soit désormais en majuscule.

    Du coup, je me demande si l'antislash est devenu indispensable, car j'ai trouvé des "JToolbarHelper " sans "", dans le code de la version 4 !
    Dernière édition par RobertG à 13/06/2017, 10h21
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    Commentaire


    • #3
      Re : Appel aux classes Joomla! 4

      Bonjour Robert,

      Je viens de faire quelques tests Joomla 4.0 dev (datant d'hier)avec divers extensions/modules/plugins qui fonctionnent bien en 3.7.2 et je n'ai pas eu de soucis avec les appels aux classes : je n'utilise pas d'antislash.

      Je poursuis mes tests.

      A plus tard,

      Pascal

      PS: je n'ai pas vraiment trouvé de mode d'emploi contenant les différences au niveau du développement de composant/module en 4.0.
      If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

      Commentaire


      • #4
        Re : Appel aux classes Joomla! 4

        J'ai testé le plugin LazyDbBackup PDO et le module LDBchecker sous 4.0 dev, sans le moindre problème.

        Par contre, si les composants JCE et Joaktree s'installent, je n'arrive pas à gérer JCE. En modifiant Joaktree au niveau du "B", la page principale s'affiche (de manière incorrecte car la bande de liens de menus que la version actuelle place à gauche se retrouve maintenant au-dessus et empilée, du fait des menus de la version 4 qui utilisent cet emplacement, d'autres erreurs apparaissent qu'il faudra que je traite.

        La question pour l'instant est de savoir si les modifications à faire pour la future 4 seront acceptées par la 3.7 ou seulement la 3.8 ou la 3.9, histoire que la migration se fasse sans douleur...
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #5
          Re : Appel aux classes Joomla! 4

          Bonjour,

          Cet antislash devant le nom des classes cela s'appelle les espaces de nom (ou namespaces) : http://php.net/manual/fr/language.namespaces.php

          Les couches de comptabilité pour faciliter la migration des extensions vers Joomla! 4.0 seront présentes dans J!3.8 et 3.9, je ne crois pas qu'il y ait quelque chose dans la J!3.7

          Il y a pas mal de chose qui passe en deprecated (JRequest, JApplication...) : https://api.joomla.org/cms-3/deprecated.html
          Développeur de l'extension Kunena : https://github.com/Kunena/Kunena-Forum

          Commentaire


          • #6
            Re : Appel aux classes Joomla! 4

            Merci de ces précisions.
            Par contre, si les noms de classes changent de casse et si JToolBarHelper n'est plus reconnu parce que ce n'est pas JToolbarHelper, idem pour d'autres, alors que ça ne pose pas de problème en 3.7 ou 3.8, ça va être coton !
            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

            Commentaire


            • #7
              Re : Appel aux classes Joomla! 4

              Salut Robert

              D'après ce que j'ai lu (et c'était très vaguement), les namespaces (espaces de nom) seront bien mieux utilisés avec J4.

              Pour Toolbar, ce sera donc ce fichier : https://github.com/joomla/joomla-cms...lbarHelper.php

              Et on voit bien

              Code PHP:
              namespace Joomla\CMS\Toolbar
              Qui définit que le fichier se trouve, au niveau du disque, dans le dossier Joomla puis CMS puis Toolbar. Ces noms sont sensibles à la casse vu qu'il s'agit de nom de dossiers / fichiers et qu'on est, à priori, sur un système Unix.

              Toutefois, au niveau de la programmation PHP, tu pourrais utiliser JToolbarHelper ou jtoolBarHELper sans différenciation car, en PHP, les noms ne sont pas sensibles à la casse. L'habitude du programmeur respectueux est de respecter la casse (notation Camel case https://fr.wikipedia.org/wiki/Camel_case) mais ce n'est pas une obligation.

              Pour l'antislash dont tu parles, c'est bien le \ et pas, comme tu l'as mis dans ton premier message ci-dessus la barre |.

              Les namespaces sont vraiment très pratique en programmation pour plusieurs raisons dont, entre autre,

              * La possibilité d'utiliser un autoloader (ce que fera J4)
              * L'isolation de ton code : tu pourrais avoir une fonction nommée JText, sans aucun souci, si tu le mets dans ton namespace (RobertG\JText). Ton namespace, c'est un peu ton tiroir : tu vas y mettre ton code sans qu'il y ait un conflit potentiel avec le JText de Joomla car ce serait, Joomla\JText (je simplifie).

              De ce que j'avais vaguement lu, il y aurait un outil de migration... Si je retombe sur l'article que j'avais survollé, je viendrais en poster l'URL ici.

              Bonne soirée.


              [Edit]
              Voici déjà un lien : https://joomla.digital-peak.com/imag...Joomla%204.pdf
              [/Edit]
              Christophe (cavo789)
              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

              Commentaire


              • #8
                Re : Appel aux classes Joomla! 4

                Merci Christophe,
                C'est la citation qui a transformé l'antislash en barre verticale.
                Je vérifierai demain, mais je suis persuadé que la différence, avec apparition de l'erreur, s'est faite sur la casse.
                Quant à l'antislash, il n'est pas présent partout dans la version 4, pour l'instant.
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                Commentaire


                • #9
                  Re : Appel aux classes Joomla! 4

                  J'y repense.. Tu as peut-être raison : php n'est sensible mais bien le système de fichiers.

                  Le autoloader va prendre le nom du namespace (php) pour en dériver le nom du fichier (sous-dossiers compris) à charger pour trouver la casse. Donc oui il est possible que autoloader soit lui sensible à la casse.

                  Ce faisant tu aurais raison et moi aussi :-D
                  Christophe (cavo789)
                  Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                  Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                  Commentaire


                  • #10
                    Re : Appel aux classes Joomla! 4

                    Donc pour résumer et si je comprends bien, dans un premier temps c'est surtout cette histoire de casse qui est à vérifier, l'antislash ne semblant donc pas indispensable.

                    Ceci dit, je me retrouve maintenant avec d'autres erreurs selon les pages de paramétrages de Joaktree, qu'il va me falloir comprendre (ou abandonner le projet...) :
                    Call to undefined method JoaktreeViewJt_applications::assignRef()
                    Dans le code de Joaktree, j'ai bien "class JoaktreeViewJt_applications extends JViewLegacy" mais je ne trouve pas JViewLegacy comme obsolète dans les pages d'incompatibilité 3 et 4. Cela voudrait-il dire que "assignRef" a disparu du nouveau code ? En fait non, car on trouve une fonction publique de ce nom dans la librairie fof (view/view.php), manifestement "deprecated" avec le commentaire "Use native PHP syntax"... Y'a du boulot en ce qui me concerne !
                    Ce qui est curieux pour moi, c'est qu'un "deprecated" interdise l'accès en disant que la méthode est non définie : parce qu'en lien avec JViewLegacy ?

                    Plus mystérieux :
                    'sql****_33.jpn.namePreposition' isn't in GROUP BY
                    Le nom de la base est correct, mais qu'est-ce que ce "jpn.namePreposition" qui devrait être dans le GROUP BY ? Je sèche.

                    PS : pour Assignref, je viens de trouver que c'est déjà "deprecated" (https://api.joomla.org/cms-3/classes/JViewLegacy.html), sans aucune explication sur par quoi remplacer, mais ce qui m'étonne, c'est que je n'ai jamais eu la moindre alerte sur cette méthode en mode de rapport d'erreur "développement" quand j'ai travaillé sur la mise à jour il y a six mois.
                    Dernière édition par RobertG à 14/06/2017, 09h16
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #11
                      Re : Appel aux classes Joomla! 4

                      J'ai trouvé ceci qui m'aide sur Assignref : http://macrotoneconsulting.co.uk/Com...oomla-3-0.html
                      Mais il est probable que d'autres modifications soient intervenues depuis.

                      Et ça doit être la chaleur , jpn.namePreposition est utilisé dans une requête de Joaktree. Reste à comprendre pourquoi Joomla! 4 exige que ce soit dans un "GROUP BY".
                      Dernière édition par RobertG à 14/06/2017, 10h20
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                      Commentaire


                      • #12
                        Re : Appel aux classes Joomla! 4

                        salut
                        Cela voudrait-il dire que "assignRef" a disparu du nouveau code ?
                        depuis un bout de temps

                        ça devient tout simplement
                        Code:
                        $this->variable = 'toto';
                        pour ce qui est du Loader, mes recherches récentes semblent indiquer que la version actuelle possède déjà le JLoader qui permet de chercher les classes dans l'arborescence de fichier et les charger automatiquement. ET y a un systeme d'override qui permet de d'abord rechercher dans les endroits où on peut mettre des overrides, et éventuellement en ajoutant avec un includePath. Tout cela est encore un peu flou pour moi mais disons que l'idée est là

                        CEd
                        Ced
                        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                        http://www.template-creator.com Outil de création de templates
                        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                        Commentaire


                        • #13
                          Re : Appel aux classes Joomla! 4

                          Oui, assignRef a disparu depuis un moment, mais ne génère aucune erreur sur les versions récentes (j'ai travaillé sur Joaktree en permanence avec le rapport d'erreurs à "développement", ça n'apparaît que sur ces tests en 4.0 dev.

                          J'ai pu corriger et supprimer ces erreurs, mais je pense qu'il va y avoir une belle cascade.
                          Par exemple sur la création d'une nouvelle source GedCom, J'ai une erreur 500 : "JHTML sliders not found" qui correspond à l'affichage de l'onglet "droits" et je n'ai pas trouvé pour le moment d'explications sur comment remplacer ce code.

                          J'ai aussi un Warning sur l'affichage d'une liste vide : la requête ne renvoie rien, donc j'ai des erreurs sur objet non défini, mais la même erreur survient si je gère (mal peut-être) le fait que le résultat est vide. Exemple sur la partie "else" :
                          $valid = $this->_db->loadResult();

                          if (!empty($valid)) {
                          $settings->valid = (int) $valid;
                          } else {
                          $settings->valid = 0;
                          }
                          Le message d'erreur est
                          Creating default object from empty value in /home/www/demos/test40/administrator/components/com_joaktree/models/jt_maps.php on line 213
                          Sans compter que je n'ai pas encore trouvé pourquoi le GROUP BY ne convient pas, comme je l'ai cité plus haut...
                          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                          Commentaire


                          • #14
                            Bonsoir RobertG

                            Effectivement, cela semble s'annoncer plutôt mal pour Joaktree avec joomla 4. Certes, ce n'est pas pour demain, mais en ayant passé pas mal de temps à chercher une solution de remplacement, je n'ai malheureusement rien trouvé du niveau de Joaktree.

                            Commentaire


                            • #15
                              Hélas, l'auteur initial à qui j'ai envoyé en février dernier la version que j'avais modifiée ne m'a donné aucune nouvelle depuis. Et en effet, il n'y a aucune extension pour Joomla! qui puisse remplacer Joaktree. Le problème est que je suis loin d'être certain d'être capable de maintenir cette extension. Je comptais sur Niels !
                              J'espère quand même qu'on aura de nouveau une version de développement 4.0 à se mettre sous la dent, ses "nighty builds" n'étant pas disponibles depuis quelques temps.
                              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X