PHP 7, attention...

Par stephweb, il y a 10 ans


Bonsoir à tous.

Sur un hébérgement mutualisé chez OVH, je viens de passer de PHP 5.6 à PHP 7. Et j'ai eu le droit au syndrome de la page blanche...
Je viens de perdre presque 1H pour trouver d'où ça venais.

Voici ce qui m'est arrivé :

<?php // Avec PHP 5.6 ça marche, Mais pas PHP 7 !!! $class = new $v[0](); $class->$v[1](); // Pour PHP 7 il faut faire : $class = new $v[0](); $method = $v[1]; $class->$method();

Pour débeuguer, j'ai du faire :

<?php ini_set('display_errors', 1); error_reporting(E_ALL);

Et comme erreur ça me mettez "Notice: Array to string conversion in ..."
Est ce que vous savez pourquoi ?
Je trouve ça bizard qu'en PHP 5.6 ça marchais nickel, et plu avec PHP7.

Quelqu'un autre a eu un problème dans le meme style ?
Y a t-il d'autres pièges ?

Merci

8 réponses

stephweb, il y a 10 ans

Meci à tous pour vos réponses.
En fait le "problme", c'est qu'avec wamp je suis en PHP5.5. Ils n'ont visiblement pas encore PHP7 http://www.wampserver.com/ ...
Donc vivement qu'ils nous mettent php 7.
Merci

Valérian, il y a 10 ans

Salut,

Je n'ai pas encore pu tester PHP7, je ne pourrai donc pas te répondre sur le sujet. Mais rien ne t'empêche de regarder la liste des changements sur la doc de PHP ou voir la vidéo de grafikart.

Toutefois, et ce n'est que mon avis, il semblerait que ton code n'était pas propre à la base. Il aurait peut-être fallu utiliser les fonctions offertes par PHP pour appeler ta méthode.

$class = new $v[0](); call_user_func( array( $class, $v[1] ) );

Merci pour l'info en tout cas.

tleb, il y a 10 ans

Salut,

Quand on update son code, il faut au moins survoler les BC. Liste ici, avec ancre qui pointe vers celui concerné.

Mouais, je suis pas trop d'accord Valérian. Perso, mon approche serait plutôt du genre :

list($class, $method) = $v; $class = new $class; $class->$method();

Après, il n'y a pas de solution parfaite, c'est juste question de préférence.

Pour débeuguer, j'ai du faire

C'est le code standard pour debugger. Dès que tu as un problème, il faut afficher les erreurs, sinon c'est dur de trouver le problème.

tleb, il y a 10 ans

Si tu te sens, tu peux essayer, Docker, ou, plus facile d'accès, vagrant+PuPHPet.

Crazyweeds, il y a 10 ans

tu peux aussi ajouter php 7 a wamp sans trop de soucis.

stephweb, il y a 10 ans

Re bonjour,
PHP 7 a peine sortie, que PHP.net nous demande déjà de passer à PHP 7.0.1 (corrections de beugs) : https://secure.php.net/archive/2015.php#id2015-12-17-1
Mais certains hebergeurs mutualisés (OVH par exemple) ne propose pas encore PHP 7.0.1, donc va falloir patienter un peu.