Maison > Article > développement back-end > Nouvelles fonctionnalités que nous devrions apprendre à utiliser dans PHP7
PHP7 apporte des améliorations significatives des performances et de nouvelles fonctionnalités, ainsi que des améliorations de certaines fonctionnalités des versions précédentes. Cet article travaillera avec vous pour comprendre et discuter des nouvelles fonctionnalités de PHP7.
1. Déclaration de type scalaire
Nous savons que PHP est un langage de programmation faiblement typé, il ne fournit donc aucune méthode pour spécifier le type des paramètres d'entrée et des valeurs de retour. PHP7 brise ce statu quo et ajoute la prise en charge de. scalaires La déclaration des types (int, float, string, bool) est prise en charge. Ajoutez l'instruction declare(strict_types=1) pour déclarer si une vérification de type stricte est requise. Jetons un coup d'œil à un morceau de code :
declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7) declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7)
Les types valides sont : nom de classe/interface, self, array, callable, bool, float, int et string.
2. Opérateur de fusion NULL
L'opérateur de fusion NULL a été ajouté dans PHP7. Ne sous-estimez pas ce « ?? », ce sera très pratique pour nous. Obtient un paramètre et peut fournir une valeur par défaut s'il est vide. Comment l'opérateur ?? renvoie-t-il le côté gauche si la valeur sur son côté gauche existe et n'est pas NULL, sinon sa valeur sur le côté droit sera renvoyée. Expérimentons la puissance de l'opérateur ?? à travers le morceau de code suivant.
<?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??> <?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??>
3. Classe anonyme
Comme son nom l'indique, il n'y a pas de nom de classe, et sa déclaration et son instanciation sont en même temps supportées par PHP7. une classe anonyme via une nouvelle classe peut être utilisée pour remplacer certaines définitions de classe complètes qui sont "gravées après utilisation".
echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello! echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello!
4. Plus d'erreurs peuvent être gérées avec des exceptions
Plus d'erreurs dans PHP7 deviennent des exceptions capturables et sont renvoyées au développeur si elles ne sont pas détectées. est une erreur. Si elle est détectée, elle devient une exception qui peut être gérée dans le programme. Par défaut, Error provoquera directement l'interruption du programme, tandis que PHP7 le capture et le gère via des blocs try/catch, permettant au programme de continuer à s'exécuter, offrant aux programmeurs des options plus flexibles.
Exemple de code :
nonExistFunction($arg); // It will generate fatal error nonExistFunction($arg); // It will generate fatal error
À ce moment, le code ci-dessus affichera l'erreur "Erreur fatale : appel à une méthode de fonction membre() sur un non-objet", et ceci une erreur fatale arrêtera l’exécution continue du code suivant.
Donc, si vous souhaitez continuer à exécuter le code, vous pouvez le résoudre via la gestion des exceptions :
try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; } try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; }
5. Combiné avec l'opérateur de comparaison 96b4fef55684b9312718d5de63fb7121
Cela ne nécessite pas beaucoup d’explications. Regardons directement l’exemple de code. Vous pouvez facilement comprendre la fonction de cet opérateur grâce au code.// PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; } // PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; }
6. Définir des constantes de tableau
Dans le passé, lorsque nous utilisions définir() pour définir des constantes, le type de données ne prenait en charge que les scalaires, mais en PHP7. , la définition est prise en charge Constante de type tableau.define('MYCONSTANT', array('a','b','c')); define('MYCONSTANT', array('a','b','c'));Il existe de nombreuses nouvelles fonctionnalités dans PHP7. Aujourd'hui, nous les présenterons en premier. Nous continuerons à les mettre à jour à l'avenir. Nous accueillons également les ajouts des PHPers.