Maison >développement back-end >PHP7 >Présentation des pièges de la mise à niveau de PHP7 !
Recommandé (gratuit) : PHP7
J'ai entendu dire que la version php7 avait été grandement améliorée auparavant, et enfin Le les projets de l'entreprise seront également mis à niveau vers PHP7.
Avant la mise à niveau, j'ai lu quelques introductions compilées par tout le monde et j'ai découvert que cette version présentait de gros changements de bas en haut. Bien sûr, l'efficacité a également été beaucoup améliorée.
En plus de quelques nouveautés (tout le monde a déjà écrit ceci dans son intégralité, j'en écrirai quelques-unes que je n'ai pas vues, et je le mettrai à jour au fur et à mesure de l'avancement du projet)
Partie extension
1. Faites attention à votre version php et téléchargez/installez l'extension correspondante Je suis dans un environnement windows, je télécharge donc le fichier dll à utiliser
. Rappel amical : faites attention à l'adresse de l'extension dans la configuration ini. Au début, j'ai été surpris de savoir pourquoi aucune de mes extensions n'était étendue, et il n'y avait aucune information dans phpinfo() ! Je ne m'attendais pas à ce que l'adresse soit fausse ! ~~Il est temps de se battre
Il devrait y avoir plus de personnes utilisant Memcache dans la version 2.5. Après quelques recherches, certains sont passés à Memcached, et d'autres ont été recompilés par moi-même. nous avons mis à niveau relativement tard, quelqu'un aurait dû télécharger cette version qui prend en charge PHP7, alors je l'ai trouvée.
Publiez le lien et accédez directement à la version correspondante : https://github.com/nono303/PHP7-memcache-dll
3.phalcon a également une version qui supporte php7 You. peut également trouver directement la version correspondante : https://github.com/phalcon/cphalcon/releases/tag/v3.4.1
Partie de code
1. La méthode split ne peut pas être utilisée en PHP. Vous pouvez utiliser preg_split ou str_split ou explode selon vos besoins
2. Fonction personnalisée Quand. en passant des paramètres, qu'est-ce que cela signifie que les paramètres ne doivent pas avoir de valeur ? Regardez la description du code suivant
Erreur :
function test($name) { if(empty($name)) { echo 'php7时会出现致命错误!~'根本到不了这里; } }
Correct :
function test($name=null) { if(empty($name)) { echo '这里就可以正常执行了~'; } }
Malheureusement, beaucoup de mes projets ont C'est comme ça que c'est écrit (en lisant grossièrement une heure par défaut quand il n'y a pas de valeur temporelle !~)
23/10/2018 18:28
Changements dans l'utilisation indirecte des variables , propriétés et méthodes
表达式 | PHP 5 的解析方式 | PHP 7 的解析方式 |
---|---|---|
$$foo[‘bar’][‘baz’] | ${$foo[‘bar’][‘baz’]} | ($$foo)[‘bar’][‘baz’] |
$$foo[‘bar’][‘baz’] | $foo->{$bar[‘baz’]} | ($$foo)[‘bar’][‘baz’] |
$$foo[‘bar’][‘baz’] | $foo->{$bar[‘baz’]}() | ($$foo)[‘bar’][‘baz’] |
Foo::$bar’baz’ | Foo::{$bar[‘baz’]}() | (Foo::$bar)[‘baz’]() |
Le code utilisant l'ancien ordre d'analyse de droite à gauche doit être réécrit pour utiliser explicitement des parenthèses pour indiquer l'ordre (voir tableau ci-dessus). Cela permet au code de maintenir une compatibilité ascendante avec PHP 7.x et une compatibilité ascendante avec PHP 5.x. (Dit dans la documentation)
D'autres disent qu'il y a beaucoup plus d'avertissements lorsque l'on compare 7. 🎜>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!