Table des matières
Nouvelles fonctionnalités PHP7
Maison développement back-end tutoriel php Explication détaillée des nouvelles fonctionnalités de php7

Explication détaillée des nouvelles fonctionnalités de php7

Mar 24, 2018 am 09:56 AM
php7 新特性

Cette fois, je vais résumer les nouvelles fonctionnalités de php7. Ce qui suit est un cas pratique. Suivons les traces de l'éditeur et jetons un œil.


Nouvelles fonctionnalités PHP7

Déclaration de type scalaire (nécessite que le paramètre soit un type spécifique, si le type de paramètre ne correspond pas, un fatal une erreur se produira dans php5, php7 lancera une exception TypeError)

a deux modes : obligatoire (par défaut) et le mode strict

les paramètres de type sont :

. 1. string

2. int

3. float

4.bool

Ils étendent d'autres types introduits dans php5

1. Nom de la classe

2. Interface

3. Tableau

4. Type de rappel

Par exemple : 🎜>

<span style="font-size:18px;">function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}
var_dump(sumOfInts(2, &#39;3&#39;, 4.1));</span>
Copier après la connexion
Sortie :

int(9)


Déclaration de type de retour


php7 ajoute la prise en charge des types de retour, qui sont cohérents avec les types de paramètres La déclaration est très similaire, la déclaration du type de retour

précise le type de la valeur de retour de la fonction. Les types disponibles sont les mêmes que ceux disponibles dans la déclaration des paramètres.

Par exemple :

<span style="font-size:18px;"><?php
function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
以上例程会输出:
Array
(
    [0] => 6
    [1] => 15
    [2] => 24
)</span>
Copier après la connexion


Opérateur de coalescence NULL

Si la variable existe et que la valeur n'est pas NULL, elle renverra sa propre valeur, sinon elle renverra son deuxième paramètre


$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
Copier après la connexion
Les résultats des expressions supérieure et inférieure sont les mêmes.


$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;
Copier après la connexion


Combinaison d'opérateurs de comparaison

est utilisé pour comparer deux expressions. Lorsque $a est supérieur, égal ou inférieur à $b, il renvoie respectivement 1, 0 ou -1


Par exemple :


<span style="font-size:18px;"><?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?></span>
Copier après la connexion
<🎜. >

Définir un tableau constant

<?php
define(&#39;ANIMALS&#39;, [
    &#39;dog&#39;,
    &#39;cat&#39;,
    &#39;bird&#39;
]);
echo ANIMALS[1]; // outputs "cat"
?>
php5.6 中 仅能通过const 定义
<?php
const $a = [
     &#39;a&#39;,&#39;b&#39;,&#39;c&#39;,
];
echo $a[1] ; //输出 “b”
?>
Copier après la connexion

Classe anonyme via definition() En prenant en charge une nouvelle classe pour instancier une classe anonyme, cela peut être utilisé pour remplacer certaines classes de complétion qui ne sont utilisées qu'une seule fois
Fournir un filtrage pour unserialize()


IntlChar

<span style="font-size:18px;"><?php
// 把所有的对象转换为 __PHP_Incomplete_Class object
$data = unserialize($foo, ["allowed_classes" => false]);
// 除了MyClass,MyClass2 都转换为 into __PHP_Incomplete_Class object 
$data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]);
// 默认的行为,接受所有的参数
$data = unserialize($foo, ["allowed_classes" => true]);
</span>
Copier après la connexion

La classe IntlChar nouvellement ajoutée est conçue pour exposer davantage de fonctions ICU. Cette classe se définit. Il existe de nombreuses méthodes statiques pour exploiter les caractères Unicode dans plusieurs jeux de caractères <. 🎜>Si vous souhaitez utiliser cette classe, vous devez d'abord installer l'extension Intl

Attendu


devrait être une méthode rétrocompatible et améliorée du précédent assert(), qui rend l'activation des assertions dans un environnement de production gratuite et offre la possibilité de lancer des exceptions caractéristiques lorsque les assertions échouent.

Maintenant, assert() est une construction de langage qui permet au premier argument d'être une expression plutôt qu'une simple chaîne à évaluer ou un booléen à tester

Utiliser utiliser pour déclarer un ensemble de classes



comme suit :



L'expression de retour du générateur

<span style="font-size:18px;"><?php
// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;
// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
?>
</span>
Copier après la connexion


est la suivante :


Un générateur peut déléguer à un autre générateur Le dispositif


est le suivant :
<span style="font-size:18px;"><?php
$gen = (function() {
    yield 1;
    yield 2;
    return 3;
})();
foreach ($gen as $val) {
    echo $val, PHP_EOL;
}
echo $gen->getReturn(), PHP_EOL;// 换行,为了提高源码可读性
以上例程会输出:
1
2
3
</span>
Copier après la connexion

Nouvelle fonction de division entière intp()


est la suivante :
<span style="font-size:18px;"><?php
function gen()
{
    yield 1;
    yield 2;
    yield from gen2();
}
function gen2()
{
    yield 3;
    yield 4;
}
foreach (gen() as $val)
{
    echo $val, PHP_EOL;
}
?>
以上例程会输出:
1
2
3
4
</span>
Copier après la connexion


Les options de session

peuvent désormais accepter un paramètre de tableau via session_start( ), Vous pouvez écrire une session à partir de la directive de configuration
<span style="font-size:18px;"><?php
var_dump(intp(10, 3));
?>
以上例程会输出:
int(3)
</span>
Copier après la connexion
dans php.ini. Les paramètres prennent en charge session.lazy_write, read_and_close, cache_limiter, etc.

comme suit : <. 🎜>
Nouvelle fonction preg_replace_callback_array()



qui peut mieux fonctionner que preg_replace_callback()

<span style="font-size:18px;"><?php
session_start([
    &#39;cache_limiter&#39; => &#39;private&#39;,
    &#39;read_and_close&#39; => true,
]);
?>
</span>
Copier après la connexion

random_bytes nouvellement ajouté( ) et random_int() deux fonctions


Veuillez consulter ce qui suit pour une utilisation spécifique :

random_bytes()
random_int()


list() ne prend plus en charge le déballage automatique de avant que
list ne fournisse aucune garantie pour objets d'exploitation qui implémentent ArrayAccess , maintenant ce problème a été résolu

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Que dois-je faire si le plug-in est installé dans php7.0 mais qu'il indique toujours qu'il n'est pas installé ? Apr 02, 2024 pm 07:39 PM

Pour résoudre le problème du plugin n'affichant pas installé dans PHP 7.0 : Vérifiez la configuration du plugin et activez le plugin. Redémarrez PHP pour appliquer les modifications de configuration. Vérifiez les autorisations du fichier du plugin pour vous assurer qu'elles sont correctes. Installez les dépendances manquantes pour garantir le bon fonctionnement du plugin. Si toutes les autres étapes échouent, reconstruisez PHP. D'autres causes possibles incluent des versions de plugin incompatibles, le chargement d'une mauvaise version ou des problèmes de configuration PHP.

Sortie de PHP 8.3 : aperçu des nouvelles fonctionnalités Sortie de PHP 8.3 : aperçu des nouvelles fonctionnalités Nov 27, 2023 pm 12:52 PM

Sortie de PHP8.3 : aperçu des nouvelles fonctionnalités À mesure que la technologie continue de se développer et que les besoins évoluent, les langages de programmation sont constamment mis à jour et améliorés. En tant que langage de script largement utilisé dans le développement Web, PHP s'est constamment amélioré pour offrir aux développeurs des outils plus puissants et plus efficaces. La version PHP 8.3 récemment publiée apporte de nombreuses nouvelles fonctionnalités et améliorations tant attendues. Jetons un coup d'œil à ces nouvelles fonctionnalités. Initialisation des propriétés non nulles Dans les versions précédentes de PHP, si une propriété de classe ne se voyait pas explicitement attribuer une valeur, sa valeur

Un guide pour découvrir les nouvelles fonctionnalités de PHP8 et acquérir une compréhension approfondie des dernières technologies Un guide pour découvrir les nouvelles fonctionnalités de PHP8 et acquérir une compréhension approfondie des dernières technologies Dec 23, 2023 pm 01:16 PM

Une analyse approfondie des nouvelles fonctionnalités de PHP8 pour vous aider à maîtriser les dernières technologies Au fil du temps, le langage de programmation PHP n'a cessé d'évoluer et de s'améliorer. La version PHP8 récemment publiée offre aux développeurs de nombreuses nouvelles fonctionnalités et améliorations intéressantes, apportant plus de commodité et d'efficacité à notre travail de développement. Dans cet article, nous analyserons en profondeur les nouvelles fonctionnalités de PHP8 et fournirons des exemples de code spécifiques pour vous aider à mieux maîtriser ces dernières technologies. Le compilateur JIT PHP8 introduit la compilation JIT (Just-In-Time)

Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Guide FAQ de l'environnement serveur PHP : résoudre rapidement les problèmes courants Apr 09, 2024 pm 01:33 PM

Les solutions courantes pour les environnements de serveur PHP consistent à s'assurer que la version correcte de PHP est installée et que les fichiers pertinents ont été copiés dans le répertoire du module. Désactivez SELinux temporairement ou définitivement. Vérifiez et configurez PHP.ini pour vous assurer que les extensions nécessaires ont été ajoutées et configurées correctement. Démarrez ou redémarrez le service PHP-FPM. Vérifiez les paramètres DNS pour les problèmes de résolution.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Apr 01, 2025 pm 03:06 PM

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...

Lequel est le meilleur, php8 ou php7 ? Lequel est le meilleur, php8 ou php7 ? Nov 16, 2023 pm 03:09 PM

Par rapport à PHP7, PHP8 présente certains avantages et améliorations en termes de performances, de nouvelles fonctionnalités et améliorations de la syntaxe, du système de types, de la gestion des erreurs et des extensions. Cependant, le choix de la version à utiliser dépend de vos besoins spécifiques et des circonstances du projet. Introduction détaillée : 1. Amélioration des performances, PHP8 introduit le compilateur Just-in-Time (JIT), qui peut améliorer la vitesse d'exécution du code ; 2. Nouvelles fonctionnalités et améliorations de la syntaxe, PHP8 prend en charge la déclaration des paramètres nommés et des paramètres facultatifs, création de fonctions L'appel est plus flexible ; des classes anonymes, des déclarations de propriétés de type, etc. sont introduites.

Quelles sont les nouvelles fonctionnalités de php8 Quelles sont les nouvelles fonctionnalités de php8 Sep 25, 2023 pm 01:34 PM

Les nouvelles fonctionnalités de php8 incluent le compilateur JIT, la déduction de type, les paramètres nommés, les types d'union, les propriétés, les améliorations de la gestion des erreurs, la prise en charge de la programmation asynchrone, les nouvelles fonctions de bibliothèque standard et les extensions de classe anonymes. Introduction détaillée : 1. Compilateur JIT, PHP8 introduit le compilateur JIT, ce qui constitue une amélioration importante des performances. Le compilateur JIT peut compiler et optimiser certains codes d'exécution à haute fréquence en temps réel, améliorant ainsi la vitesse d'exécution. 2. Dérivation de type, PHP8 ; introduit la fonction d'inférence de type, permettant aux développeurs de déduire automatiquement le type de variables lors de la déclaration des variables, etc.

See all articles