Maison > développement back-end > PHP7 > le corps du texte

La signification des contraintes de type php7

藏色散人
Libérer: 2023-02-17 13:04:02
original
2791 Les gens l'ont consulté

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;));
Copier après la connexion

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;));
Copier après la connexion

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;));
Copier après la connexion

À 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));
Copier après la connexion

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;);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal