Maison >développement back-end >PHP7 >Résumé de la mise à niveau de PHP5.6 vers PHP7

Résumé de la mise à niveau de PHP5.6 vers PHP7

coldplay.xixi
coldplay.xixiavant
2021-04-28 10:25:033488parcourir

Résumé de la mise à niveau de PHP5.6 vers PHP7

Avant-propos

Cet article est un résumé d'une conférence + une recherche de suivi.
Je suivais la mode à l'époque et j'ai immédiatement installé php7 sur mon ordinateur dès sa sortie. php5 et php7 coexistaient j'ai tout de suite écrit un script de boucle super chronophage et je l'ai testé. C'est vrai que php7 c'est beaucoup. plus puissant, puis j'y ai prêté une certaine attention. Nouvelles fonctionnalités et certaines utilisations abandonnées.
La mise à niveau de php étant une priorité absolue, la société ne prévoit de mettre à niveau que dans un avenir proche, je ne peux donc qu'apprécier le plaisir apporté par php7 en privé auparavant. L'ami en charge de la mise à niveau a fait un partage, ce qui est tout à fait. complet. Notez-le ici.

Recommandé (gratuit) : PHP7

Principales questions de recherche :
1. Avantages de PHP7
2.PHP7 Nouveautés apporté
3. Abandon apporté par PHP7
4. Changements apportés par PHP7
5. Comment exploiter pleinement les performances de PHP7
6. Comment écrire un meilleur code pour accueillir PHP7 ?
7. Comment mettre à jour le code du projet actuel pour qu'il soit compatible avec PHP7 ?

Les avantages de PHP7

Oui, les performances ont été grandement amélioré, peut économiser des machines et économiser de l'argent.

Nouveautés apportées par PHP7

1.

Vous pouvez utiliser une chaîne, un entier, un float et un bool pour déclarer les types de paramètres de fonction et les valeurs de retour de la fonction.

declare(strict_types=1);
function add(int $a, int $b): int {
    return $a+$b;
}

echo add(1, 2);
echo add(1.5, 2.6);

php5 ne peut pas exécuter le code ci-dessus. Lorsque php7 est exécuté, il affichera d'abord un 3 et une erreur (l'argument 1 passé à add() doit être du type entier, float donné) ;

Il existe deux modes de déclaration de type scalaire : le mode obligatoire (par défaut) et le mode strict.
declare(strict_types=1), doit être placé sur la première ligne du fichier pour exécuter le code. Le fichier actuel est valide !

2.set_exception_handler() ne garantit plus que l'objet d'exception reçu doit être un objet Exception

En PHP 7, il existe de nombreuses erreurs fatales et erreurs fatales récupérables , sont convertis en exceptions pour traitement. Ces exceptions héritent de la classe Error, qui implémente l'interface Throwable (toutes les exceptions implémentent cette interface de base).

PHP7 facilite davantage les développeurs et leur donne un plus grand contrôle sur le programme. Parce que par défaut, l'erreur provoquera directement l'interruption du programme, tandis que PHP7 offre la possibilité de la capturer et de la traiter, permettant ainsi au programme de continuer. la mise en œuvre continue de fournir aux programmeurs des options plus flexibles.

3. Nouvel opérateur "<=>"

Syntaxe : $c = $a <=> de $b, $c est 1

Si $a == $b, la valeur de $c est 0

Si $a < 1

4. Nouvel opérateur "??"

Si la variable existe et que la valeur n'est pas NULL, elle renverra sa propre valeur, sinon elle renverra son deuxième numéro d'opération. .

//原写法
$username = isset($_GET[&#39;user]) ? $_GET[&#39;user] : &#39;nobody&#39;;

//现在
$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
5.define() Définir un tableau de constantes

define(&#39;ARR&#39;,[&#39;a&#39;,&#39;b&#39;]);
echo ARR[1];// a

6.AST : Arbre de syntaxe abstraite, arbre de syntaxe abstraite

AST sert d'intermédiaire dans le PHP processus de compilation Il remplace la manière originale de cracher l'opcode directement à partir de l'interpréteur, en dissociant l'interpréteur (analyseur) et le compilateur (compilateur), ce qui peut réduire certains codes de piratage et, en même temps, rendre l'implémentation plus facile à comprendre et à maintenir. .

PHP5 : Code PHP-> Analyse de la syntaxe de l'analyseur-> OPCODE ->

Référence : https://wiki.php.net/rfc/abstract_syntax_tree

7. Fonction anonyme

$anonymous_func = function(){return 'function';};
echo $anonymous_func(); // 输出function
8. }")

9.Unserialize fournit des fonctionnalités de filtrage

pour empêcher l'injection de code de données illégales et fournir des données désérialisées plus sûres.

10. Optimisation de la référence de l'espace de noms

// PHP7以前语法的写法 
use FooLibrary\Bar\Baz\ClassA; 
use FooLibrary\Bar\Baz\ClassB; 
// PHP7新语法写法 
use FooLibrary\Bar\Baz\{ ClassA, ClassB};
Abandon apporté par PHP7

1 Extension abandonnée

Expression régulière Ereg

mssql

mysql<.> sybase_ct


2. Fonctionnalités obsolètes

Impossible d'utiliser des constructeurs du même nom

Les méthodes d'instance ne peuvent pas être appelées en tant que méthodes statiques

3. >

l'appel de méthode

call_user_method()  
call_user_method_array()
doit utiliser call_user_func() et call_user_func_array()

fonction liée au cryptage

mcrypt_generic_end() 
mcrypt_ecb() 
mcrypt_cbc() 
mcrypt_cfb() 
mcrypt_ofb()
Remarque : PHP7.1 et versions ultérieures mcrypt_* Les fonctions de séquence seront être retiré. Utilisation recommandée : fonction de séquence openssl

Divers

set_magic_quotes_runtime 
set_socket_blocking 
Split 
imagepsbbox() 
imagepsencodefont() 
imagepsextendfont() 
imagepsfreefont() 
imagepsloadfont() 
imagepsslantfont() 
imagepstext()
4 Utilisation obsolète

La variable $HTTP_RAW_POST_DATA a été supprimée, utilisez plutôt php://input

. Les commentaires commençant par # ne sont plus pris en charge dans les fichiers ini. Utilisez ";"

Suppression de la prise en charge du format ASP et de la syntaxe de script : <% et