Maison  >  Article  >  développement back-end  >  La signification des contraintes de type php7

La signification des contraintes de type php7

藏色散人
藏色散人original
2019-11-09 09:19:272677parcourir

La signification des contraintes de type php7

Signification des contraintes de type php7

avant PHP7 , les fonctions et les méthodes de classe n'ont pas besoin de déclarer des types de variables, et toutes les données peuvent être transmises et renvoyées, ce qui oblige la plupart des opérations d'appel à déterminer si le type de données renvoyé est qualifié.

Pour résoudre ce problème, PHP7 a introduit les déclarations de type.

Il existe actuellement deux types de variables qui peuvent être déclarées : les paramètres formels et les valeurs de retour.

Les types pris en charge incluent les entiers, les virgules flottantes, les chaînes et les booléens.

Le code suivant :

<?php
function study(int $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

Afin de sauvegarder la longueur du code, je n'écrirai pas de POO, j'utiliserai simplement la fonction comme exemple.

Cette fonction spécifie que le type de paramètre est int et que la chaîne 'ddd' est transmise lors de l'appel, donc une erreur fatale se produira lors de l'exécution de ce code.

Dans certains cas, PHP n'est toujours pas si sérieux, comme suit :

<?php
function study(bool $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

Le type de paramètre spécifié est bool, mais la chaîne entrante est convertie en true, Le le résultat de sortie après l'exécution est : bool(true)

Si vous souhaitez forcer le type de contrainte, vous pouvez ajouter une instruction declare en tête du fichier :

<?php
declare(strict_types = 1);
function study(bool $get)
{
    return $get;
}
var_dump(study(&#39;ddd&#39;));

À ce stade, une erreur fatale se produit car le type de paramètre spécifié est bool mais le type de paramètre transmis est une chaîne. Seul le fait de changer 'ddd' en true et false fonctionnera, même s'il est 1 ou 0.

Ensuite, introduisons la déclaration du type de retour :

<?php
declare(strict_types = 1);
function study(bool $get) : int
{
    return (int)$get;
}
var_dump(study(true));

Ajoutez deux points et tapez après les parenthèses du paramètre formel pour spécifier le type de valeur de retour de la méthode et quoi le type de retour est spécifié.

est également affecté par declare

S'il n'y a pas de contrainte de type obligatoire, alors PHP convertira les données renvoyées en données du type spécifié, puis les renverra. Actuellement, seule la chaîne ne peut pas l'être. forcé à int. Une erreur sera signalée.

Si des contraintes obligatoires sont spécifiées, PHP n'effectuera pas de conversion de type, mais comparera. Si les types sont différents, une erreur sera signalée.

De plus, le type de valeur de retour peut également spécifier le nom de l'objet, puis une instance de l'objet spécifié doit être renvoyée, telle que :

<?php
class person
{
    private function __construct($name)
    {
        $this->name = $name;
    }
    static function instance(string $name) : person
    {
        return new self($name);
    }
}
person::instance(&#39;zhangsan&#39;);

C'est l'une des nouvelles fonctionnalités de PHP7 : la déclaration de type.

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