Bonjour à tous,
Je suis en train de convertir une base de code de PHP 5 vers PHP 7.
Celle-ci fait appel au template engine Savant2, qui ne fonctionne plus après PHP 5.
Savant2 pourrait être remplacé par un autre template engine, mais cela s'avère assez compliqué pour l'instant, la base de code utilisant de nombreux templates.
C'est pourquoi je tente de porter Savant2 vers PHP 7.
La version d'origine pour PHP 5 peut être téléchargée ici: https://github.com/pmjones/savant/bl...t2/Savant2.php
La version en cours de portage pour PHP 7 peut être téléchargée via ce lien temporaire : https://gofile.io/d/TAcmnv
Le sous dossier "tests" contient des fichiers de test numérotés de 1 à 9 permettant de vérifier ce qui fonctionne ou pas.
Les fichiers que j'ai modifiés sont:
- Savant2.php, situé à la racine
- les fichiers de test situés dans le dossier "tests"
Les modifications mineures apportées aux fichiers de test concernent le chemin d'accès (afin qu'ils puissent inclure Savant2.php), et la manière dont sont déclarées les instance d'objet Savant2.
Le problème que je rencontre actuellement concerne la ligne 1041 de Savant2.php :
$this->$arg[0] = $arg[1]; // PHP 5 only
En PHP 7, cela bute sur:
Notice: Array to string conversion in C:\xampp\htdocs\mon-site-local.com\chemin\Savant2.php on line 1041
Le problème sembe provenir de Cela fait notamment échouer les derniers tests contenus dans les fichiers "2_display.php" et "3_fetch.php".
(cf. sections "Display existing template", respectivement "Fetch existing template")
Je recommande de tester d'abord "3_fetch.php" et de jeter un oeil au template "tests/templates/test.tpl.php".
Cela permet de voir quelles propriétés du template n'ont pas pu être assignées.
Un programmeur plus expérimenté que moi parviendrait-il à débloquer la situation ?
Je n'ai pas pas étudié la logique dernière Savant2, son fonctionnement intrinsèque et l'ensemble de ses possibilités ; je cherche simplement à adapter ce moteur de templates pour permettre aux fonctionnalités appelées par ma base de code de fonctionner aussi sous PHP 7.
Partager