5 nouvelles fonctionnalités en php 7

5 nouvelles fonctionnalités en php 7

Auteur bio

Cette étude de cas est un article invité écrit par Kaira Clark Works chez Xicom Technologies Ltd - une société de développement d'applications Web CakePHP. Elle est toujours heureuse de partager sa passion pour le marketing et le développement Web. Si vous prévoyez d'embaucher une équipe dédiée pour une brillante présence en ligne, elle est celle pour vous.

5 nouvelles fonctionnalités en php 7

Tout bien considéré, 2015 a été une année essentielle pour chaque concepteur de PHP, et après onze ans, l'adaptation PHP à 5.0 Libération, il y a un autre développement qui est à long terme. Cependant, considérez les différents faits saillants de développement, réfléchissez à la méthode que votre variante PHP affecterait votre base de code PHP actuelle? Évaluez simplement ce qui a vraiment changé en php? Comment pouvez-vous gérer en toute sécurité les refonte PHP? Ici, dans cet article, vous obtiendrez toutes les solutions pour vos demandes et aurez finalement l'expérience de ce qui vous arrive pendant que vous travaillez avec PHP 7. Alors, venons au cœur de la question de l'examen maintenant.

Améliorations d'exécution

Les mises à niveau d'exécution sont probablement l'une des principales motivations parmi les développeurs sur les raisons pour lesquelles tout le monde devrait avoir un rapport sur chaque serveur lorsqu'il y a une arrivée de la variante stable PHP est publié. Le refactoring central présenté par le téléphone RFC rend PHP 7 plus rapidement que HHVM. Les repères officiels sont remarquables: la plupart des applications normales fonctionnant sur PHP 5.6 continuera à s'exécuter dans chaque événement deux fois plus rapide sur PHP 7.

Pièges de compatibilité en arrière

Maintenant, ayons une conversation sur quelques facteurs PHP essentiels qui pourraient éventuellement décomposer une application héritée fonctionnant sur des versions PHP plus anciennes.

  • Syntaxe variable uniforme

Résout une série de chaque incohérence au moment d'évaluer les expressions variables variables. Considérez le code ci-dessous indiqué:

 Class Company public $ emp_name = 'madhur; public $ emp_des = 'ingénieur logiciel';  $ Company = new Company (); $ property = ['premier' => 'emp_name', 'second' => 'info']; Echo "Nemployee Nom Is" . $ Company -> $ Property ['First'] . "nn"; 

Dans PHP 7, l'expression $ Company -> $ Property ['First'] est évaluée comme $ Company -> $ Property ['First']. L'interprète évaluera d'abord la propriété $ Company -> $.

Merci à notre nouvelle syntaxe de variable de gauche à droite uniforme qui rend chaque expression valide, ce qui n'était pas possible dans la version PHP précoce. Considérez la classe suivante pour une meilleure compréhension:

 Class Company public static $ location = 'ncr'; Fonction publique getBranches () return ['Jaipur' => function () return "East and West;, 'chandigarh' => function () return 'North and South';]; Fonction publique GetBranchesOf ($ quelqu'un) return $ this-> getBranches () [$ quelqu'un]; fonction statique publique getNewCompany () return new Company (); 

PHP 7 permet de créer des associations imbriquées avec différentes combinaisons entre les opérateurs:

$ société = nouvelle société (); écho "n" . $ Company-> getBranches () ['Jaipur'] () . "nn"; écho "n" . $ Company-> GetBranchesOf ('Chandigarh') () . "nn"; 

Cet extrait de code générerait une erreur d'analyse sur PHP 5, mais va bien avec PHP 7.

Travailler avec une erreur fatale avec plusieurs clauses «par défaut»

C'est, encore une fois un cas controversé qui se rapporte à des erreurs plus logiques. Il n'utilise pas plusieurs clauses par défaut dans un commutateur simplement parce qu'elle n'a jamais eu lieu à aucun avertissement d'erreur. Dans PHP 7, vous rencontrerez une erreur fatale: "Les instructions de commutation ne contiennent qu'une seule clause par défaut".

Exceptions du moteur en php

Les exceptions du moteur fonctionnent comme une procédure de gestion des erreurs dans l'application. Ainsi, toutes vos erreurs mortelles fatales et récupérables existantes sont efficacement remplacées par des exceptions, pour attraper facilement toutes lesdites erreurs et prendre des mesures contre pour gérer ces erreurs.

Passons au code ci-dessous sur la façon de gérer la mise en œuvre des exceptions du moteur pour garder la compatibilité en arrière facilement:

 set_error_handler (fonction ($ code, $ message) echo "error $ code:" . $ message . "nn"; ); Fonction A (ArrayObject $ b) return $ b;  un examen"); Echo "Hello World"; 

Ce code récupère efficacement l'erreur qui est causée par le type de type lorsque vous appelez la fonction a () à l'aide de chaîne comme paramètre.

Bonjour le monde

Cette exécution se poursuivra parce qu'une erreur a été gérée efficacement. Dans PHP 7, il générera une exception TypeError qui n'est pas une erreur. Donc, dans ce cas, un gestionnaire d'erreurs personnalisé ne sera pas appelé, et c'est la sortie ci-dessous que vous rencontrerez:


Erreur fatale: non apparenté TypeError: L'argument 1 transmis à A () doit être une instance de ArrayObject, chaîne donnée, appelée dans / vagabiller / tests / test04.PHP sur la ligne 12 et défini dans / Vagrant / Tests / Test04.PHP: 7
Trace de la pile:
# 0 / vagabond / tests / test04.php (12): a ('test')
# 1 main
jeté dans / vagabond / tests / test04.PHP sur la ligne 7

Ici, une exécution s'arrêtera car l'exception n'est pas capturée. Pour surmonter ce problème, il faut trouver les exceptions en utilisant des blocs Try / Catch. Notez que la hiérarchie des exceptions changera pour s'adapter aux nouvelles exceptions du moteur avec un code hérité minimal. Reportez-vous au modèle suivant ci-dessous:

  • Interface jetable
    • L'exception implémente le jetable
      • ErrorException étend une exception
      • RuntimeException étend une exception
    • L'erreur implémente le jetable
      • TypeError étend l'erreur
      • ParseError prolonge l'erreur
      • AssertionError étend l'erreur

Le modèle ci-dessus signifie qu'une nouvelle exception fourre-tout est désormais une expressionnable au lieu d'une exception.

Fonctionnalités linguistiques nouvellement ajoutées

Voyons ce qu'il inclut?
Nouveaux opérateurs

1. -> Opérateur de vaisseau spatial / comparaison
L'opérateur de vaisseau spatial est indiqué comme, également connu sous un nom de comparaison combiné qui est utilisé pour permettre une comparaison enchaînée.

Il a une expression suivante:
$ a $ b

1. L'expression évalue à -1 si $ a est inférieur à $ b
2. 0 Si $ a est égal à $ b
3. 1 Si $ a est supérieur à $ b.

Dans l'ensemble, il peut être utilisé comme expression suivante:

($ a $ b) ? dix)

2 -> L'opérateur de fusion nul est indiqué comme ?? Cela permet de vérifier si une valeur est définie pour l'utiliser.

Indices de type scalaire

Les indices de type scalaire sont l'un des attributs les plus connus qui sont inclus dans le langage PHP qui utilise des entiers, des flotteurs, des cordes et des symboles booléens comme indications de type pour fonctionner avec des fonctions et des méthodes. Les conseils de type scalaire ne sont pas restrictifs par défaut qui signifient que lorsque vous passez une valeur flottante à un paramètre entier, il le supprimera simplement pour allumer le format sans aucune avertissement d'erreur.

Ainsi, pour surmonter ce problème, il est essentiel de permettre un mode strict qui lancera des erreurs lorsqu'un type scalaire illégal est passé comme un argument. Passons au code généré ci-dessous:

 fonction double (int $ value) return 2 * $ value;  $ a = double ("5"); var_dump ($ a); 

Pour vous assurer que les entiers sont autorisés à être transmis à la double fonction, puis activez un mode strict en incluant les modèles Declare (strict_types = 1) comme première ligne de votre script:

 Declare (strict_types = 1); fonction double (int $ value) return 2 * $ value;  $ a = double ("5"); var_dump ($ a); 

Ce code générera un Erreur fatale: non-piond typeerror: L'argument 1 passé pour double () devrait être de type entier, chaîne donnée.

Indices de type retour

Une autre nouvelle fonctionnalité importante qui est ajoutée à PHP 7 est sa capacité extrême pour activer le type de retour des méthodes ainsi que les fonctions; qui se comporte comme un type scalaire indique. Attention au code généré ci-dessous:

 fonction a (): bool return 1;  var_dump (a ()); 

Cet extrait de code s'exécute efficacement sans avertissements, et la valeur renvoyée est convertie automatiquement au format bool. En activant le mode strict, une erreur fatale est générée:

Erreur fatale: type de type non cinglé: la valeur de retour de a () doit être du type booléen, entier renvoyé

Ces erreurs sont une sorte d'exceptions qui sont capturées et manipulées en utilisant des blocs Try / Catch.

Conclusion

J'espère que vous apprécierez de travailler avec toute la nouvelle version de PHP 7. En savoir plus