plus de create_function

Petit nouveau ! | 1 Messages

28 mai 2022, 14:55

Bonjour à tous,
j'ai voulu réactiver un vieux projet Symfony, codé à l'époque avec Symfony 1.0 et une vieille version de PHP.
Dans le coeur même de Symfony, on trouve des 'create_function', chose qui n'existe plus depuis PHP7.2 il me semble.
Lorsque je fais "symfony ini-project" en ligne de commande j'ai droit à un magnifique "fatal error : create_function undefined"

J'ai trouvé un bout de code sur github pour remplacer cette function (lombax85/create_function)
Pour l'intégrer, j'aimerais explorer deux pistes :

- Est ce que je peux ajouter à mon php.ini un lien vers ce fichier.php pour que ensuite PHP connaisse "nativement" cette function ?
- Plus spécifiquement à mon sujet, y a t il un répertoire d'où toutes les fonctions Symfony sont en autoload ?

Merci pour toute aide sur l'un ou l'autre de ces points !!
JC

ynx
Eléphant du PHP | 440 Messages

29 mai 2022, 12:51

Bonjour,

Symfony 1.0 ! Ça ne nous rajeunit pas.

Ce n'est pas via le fichier php.ini mais plutôt via composer que tu pourrais ajouter le dépôt de lombax85 à ton projet. Sans composer, tu peux aussi l'ajouter manuellement en téléchargeant le dépôt dans ton projet (bouton Code -> Download Zip sur github) puis en incluant les fichiers nécessaires via un require_once.

A priori les classes PHP prises en charge par l'autoload sont dans les dossier lib/ et apps/
https://symfony.com/legacy/doc/book/1_0 ... ng_feature
https://symfony.com/legacy/doc/book/1_0 ... components

Tu risques d'avoir d'autres problèmes de compatibilité entre Symfony 1 et PHP 7. Le plus simple serait surement d'installer la version PHP correspondant au projet.

pipi
Invité n'ayant pas de compte PHPfrance

02 juin 2022, 14:21

Si cette function a été supprimée c'est pour une bonne raison, Et oui je suis d'accord avec la personne qui t'a répondu, j'ajouterais avec docker par example tu peux utilise la version de PHP qu'il te faut en sélectionant le bon tag.

Maintennt si tu veux vraiment réactiver ton projet et lancer en prod, il y aura un peu plus de boulot... pas mal de littérature et différentes stratégies quant au maintien du bon vieux code. Si c'est un petit projet, je te conseille d'extraire la logique et d'utiliser une version récente de PHP et de ta framework préférée.

Merci.