phpBB 3.3 (Proteus) n'est qu'une mise à jour mineure de la version 3.2. Il y a cependant quelques changements dont les développeurs d'extensions doivent être conscients. Les changements les plus importants à venir dans 3.3 sont les mises à jour de nombreuses dépendances sous-jacentes de phpBB, mettant à jour Symfony, Twig, jQuery et PHP.
Cette documentation explique :
PHP 7
PHP 7.1.3 est la version minimale requise par phpBB 3.3. Il est peu probable que cela provoque des problèmes d'extensions. Si votre code PHP fonctionnait en phpBB 3.1 ou 3.2, il devrait également fonctionner en phpBB 3.3.
Si vous avez l'intention de commencer à utiliser certaines des nouvelles constructions de langage introduites dans PHP 7, vous devez faire connaître les exigences PHP minimales de votre extension à vos utilisateurs. Cela peut inclure la définition de la version minimale de PHP dans le fichier composer.json de votre extension ainsi que la désignation de phpBB 3.3 comme exigence minimale. Vous pouvez également utiliser le fichier ext.php pour vérifier que les exigences minimales de version PHP et phpBB sont satisfaites dans la méthode is_enableable (), ce qui empêchera les utilisateurs qui ne remplissent pas les conditions d'installer accidentellement votre extension. Des exemples de cela peuvent être trouvés ici
Symfony 3.4
Symfony a été mis à jour à 3.4 (de 2.8). Les modifications suivantes sont dues aux obsolescences introduites dans Symfony 2 qui ont été supprimées de Symfony 3. Les modifications suivantes sont requises pour phpBB 3.3 et versions ultérieures.
Bien que les modifications suivantes soient requises pour phpBB 3.3, elles sont rétrocompatibles et, par conséquent, fonctionneront toujours avec phpBB 3.2 et 3.1.
Caractères spéciaux obsolètes au début des chaînes non citées
Selon la spécification Yaml, les chaînes non cotées ne peuvent pas commencer par @,%, `, | ou >. Vous devez encapsuler ces chaînes avec des guillemets simples ou doubles :
vendor.package.class: class: vendor\package\classname arguments: - '@dbal.conn' - '%custom.tables%' calls: - [set_controller_helper, ['@controller.helper']]
Modèle de route obsolète
Les versions plus anciennes de Symfony et phpBB permettaient de définir des routes à l'aide du modèle de mot-clé pattern :
vendor.package.route: pattern: /{value}
Pour phpBB 3.3, les chemins d'accès doivent être définis à la place à l'aide du mot clé path :
vendor.package.route: path: /{value}
Twig 2
Twig a été mis à jour de la version 1 à la version 2. Cette modification ne doit pas affecter la syntaxe du modèle Twig que vous utilisez dans vos extensions.
jQuery 3
phpBB 3.3 est livré avec jQuery 3.4.1, mis à jour à partir de la version 1.12.4 beaucoup plus ancienne livrée avec phpBB 3.2.
Les développeurs de jQuery sont très bons pour maintenir la compatibilité descendante, ce qui signifie que la plupart de votre code jQuery devrait continuer à fonctionner. Les changements les plus importants introduits par les versions 2 et 3 de jQuery sont la suppression de la prise en charge des navigateurs hérités, en particulier Internet Explorer.
Bien qu'il ne soit pas toujours facile de vérifier si le code jQuery d'une extension fonctionne correctement, jQuery fournit un plug-in de migration sur son site Web. Vous pouvez ajouter la version non compressée de ce plug-in à votre carte de développement phpBB, qui générera sur la console d’erreurs de votre navigateur tout problème détecté dans votre code jQuery.
La majorité des problèmes que vous pouvez voir signalés par le plug-in de migration seront des avertissements liés à l'utilisation de fonctions jQuery obsolètes (généralement des raccourcis ou des alias tels que click () ou focus () qui devraient plutôt être remplacés par le gestionnaire d'événements de délégation on ()) . Même si vous utilisez des fonctions obsolètes, elles fonctionneront très probablement très bien, bien qu'il soit préférable d'effectuer les mises à jour recommandées dans le cas où jQuery supprimerait finalement les fonctions obsolètes.
Messages d'erreur d'installation de l'extension
Une fonctionnalité souvent demandée par les auteurs d'extensions fait enfin ses débuts dans phpBB 3.3 : Affichage des messages d'erreur aux utilisateurs lorsqu'une extension ne peut pas être activée !
En règle générale, les auteurs d'extensions utilisent le fichier ext.php de leur extension pour définir des tests conditionnels pour vérifier et voir si une carte phpBB répond aux exigences de base de leur extension. S'il échoue, l'extension n'est pas activée. Cependant, les utilisateurs ne reçoivent qu'un message d'erreur indiquant que leur carte n'a pas répondu aux exigences de l'extension.
Désormais, les auteurs d'extensions peuvent expliquer quelles sont les exigences spécifiques à l'origine de l'échec de l'installation de l'extension.
Cela peut être fait dans le même fichier ext.php et la même méthode is_enableable () qu'avant. Sauf que maintenant, au lieu de ne pouvoir renvoyer qu'un booléen true ou false, la méthode vous permet de renvoyer un tableau de messages d'erreur pour chaque raison pour laquelle une extension ne peut pas être activée/installée.
Pour être rétrocompatible avec phpBB 3.2 et 3.1, recherchez phpBB 3.3 ou plus récent avant d'utiliser le nouveau système de message. Sinon, pour les anciennes cartes phpBB, vous devez utiliser la méthode d'origine de retour d'un simple booléen true/false.
/** * Check if extension can be enabled * * @return bool|array True if enableable, false (or an array of error messages) if not. */ public function is_enableable() { // Only install extension if PHP ZipArchive is present $enableable = class_exists('ZipArchive'); // If the test failed and phpBB 3.3 is detected, return error message explaining why if (!$enableable && phpbb_version_compare(PHPBB_VERSION, '3.3.0', '>=')) { // Import my extension's language file $language = $this->container->get('language'); $language->add_lang('my_install_lang_file', 'myvendor/myextension'); // Return message 'PHP ZipArchive is required to enable and use this extension.' return array($language->lang('INSTALL_FAILED_MESSAGE')); } // Return the boolean result of the test, either true (or false for phpBB 3.2 and 3.1) return $enableable; }