Maison  >  Article  >  développement back-end  >  Nouvelle fonctionnalité PHP 7.2 : déclaration du type de paramètre (avec code)

Nouvelle fonctionnalité PHP 7.2 : déclaration du type de paramètre (avec code)

不言
不言original
2018-08-08 16:55:345979parcourir

La version php7.2 a de nouvelles fonctionnalités, fonctions et améliorations qui nous permettent d'écrire un meilleur code. Dans l'article suivant, je présenterai une nouvelle fonctionnalité dans php7.2 : la déclaration de type de paramètre. Pas grand chose à dire, prenons. un examen plus approfondi du contenu du texte.

Déclaration du type de paramètre

À partir de PHP 5, nous pouvons spécifier les types de paramètres attendus dans la déclaration de la fonction. Si la valeur donnée est d’un type incorrect, PHP générera une erreur. Une déclaration de type de paramètre (également appelée indice de type) spécifie le type de variables censées être transmises à une fonction ou à une méthode de classe.

Voici un exemple :

class MyClass {
    public $var = 'Hello World';
}

$myclass = new MyClass;

function test(MyClass $myclass){
    return $myclass->var;
}

echo test($myclass);

Dans ce code, la fonction de test nécessite une instance de MyClass. Des types de données incorrects entraînent l'erreur fatale suivante :

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of MyClass, string given, called in /app/index.php on line 12 and defined in /app/index.php:8

Depuis PHP 7.2, les indices de type peuvent être utilisés avec les types de données d'objet, et cette amélioration permet de déclarer des objets génériques en tant que paramètres de fonctions ou de méthodes. Voici un exemple :

class MyClass {
    public $var = '';
}

class FirstChild extends MyClass {
    public $var = 'My name is Jim';
}
class SecondChild extends MyClass {
    public $var = 'My name is John';
}

$firstchild = new FirstChild;
$secondchild = new SecondChild;

function test(object $arg) {
    return $arg->var;
}

echo test($firstchild);

echo test($secondchild);

Dans cet exemple, nous appelons la fonction test deux fois, en passant un objet différent à chaque appel. Cela n'était pas possible dans les versions précédentes de PHP.

Déclaration du type de retour d'objet

Si la déclaration du type de paramètre spécifie les types attendus des paramètres de la fonction, la déclaration du type de retour spécifie le type attendu de la valeur de retour.

La déclaration du type de retour spécifie le type de variable que la fonction est censée renvoyer.

À partir de PHP 7.2, nous sommes autorisés à utiliser des déclarations de type de retour pour les types de données d'objet. Voici un exemple :

class MyClass {
    public $var = 'Hello World';
}

$myclass = new MyClass;

function test(MyClass $arg) : object {
    return $arg;
}

echo test($myclass)->var;

Les versions précédentes de PHP entraîneraient l'erreur fatale suivante :

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10

Bien sûr, en PHP 7.2, ce code répondra par 'Hello World' .

Déclaration de grâce des types de paramètres

PHP n'autorise actuellement aucune différence dans les types de paramètres entre les sous-classes et leurs classes ou interfaces parentes. Qu'est-ce que cela signifie?
Considérez le code suivant :

<?php
class MyClass {
    public function myFunction(array $myarray) { /* ... */ }
}

class MyChildClass extends MyClass {
    public function myFunction($myarray) { /* ... */ }
}

Ici, nous avons omis les types de paramètres dans la sous-classe. En PHP 7.0, ce code produit l'avertissement suivant :

Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8

Depuis PHP 7.2, nous sommes autorisés à omettre les types dans les sous-classes sans casser aucun code. Cette suggestion nous permettra de mettre à niveau les classes pour utiliser les indices de type dans la bibliothèque sans avoir à mettre à jour toutes les sous-classes.

Virgule de fin dans la syntaxe de la liste

La virgule de fin après le dernier élément du tableau est une syntaxe valide en PHP, parfois pour ajouter facilement de nouveaux éléments et éviter les erreurs dues à des causes de virgule manquante erreurs d'analyse, son utilisation est encouragée. Depuis PHP 7.2, nous sommes autorisés à utiliser des virgules de fin pour regrouper les espaces de noms.

Articles connexes recommandés :

Collection de nouvelles fonctionnalités PHP5.5 ~ PHP7.2 - article personnel

Présentation des performances de la version PHP7.2

Nouvelles fonctionnalités PHP7.2

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:
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