Maison développement back-end tutoriel php Résumé de la déclaration du type de fonction PHP

Résumé de la déclaration du type de fonction PHP

Nov 11, 2019 pm 01:47 PM
php函数

PHP7 commence à prendre en charge la déclaration de type scalaire, et la saveur du langage fortement typé est relativement forte. En utilisant cette fonctionnalité, j'ai rencontré deux pièges : une fois lors de la déclaration de paramètres de type booléen, et plus récemment lors de la déclaration de paramètres de type double, qui ont tous deux entraîné des erreurs d'exécution. Afin d'éviter de commettre des erreurs similaires à l'avenir, j'ai lu les documents officiels ces derniers jours. Cet article est un résumé de l'utilisation des déclarations de type dans les fonctions PHP après l'avoir lu.

Syntaxiquement, la définition des fonctions PHP a traversé plusieurs périodes :

Antiquité (PHP 4)

Il est très simple de définir une fonction, utilisez la déclaration syntaxique de function name(args) {body}. Les types de paramètres et de valeurs de retour ne peuvent pas être spécifiés, et il existe un nombre illimité de types de paramètres et de valeurs de retour possibles. C’est de loin la manière la plus courante de déclarer une fonction.

Déclaration de la valeur des paramètres de type tableau et référence (PHP 5)

Le tableau, la classe, l'interface et l'appelable peuvent être utilisés dans la déclaration de fonction. À partir de la version 5.6, les constantes (y compris les constantes de classe) sont prises en charge comme paramètres par défaut, ainsi que les tableaux de paramètres (préfixés par des points de suspension...). Par exemple :

function sum(...$numbers) {
    $sum = 0;
    foreach ($numbers as $number) {
        $sum += $number;
    }
    return $sum;
}
Copier après la connexion

Remarque : Si la valeur du paramètre peut être nulle, null doit être la valeur par défaut du paramètre, sinon une erreur se produira lors de l'appel. Par exemple :

function foo(array $arr = null) {
    ...
}
Copier après la connexion

Type scalaire et déclaration de valeur de retour (PHP 7)

Les fonctions prennent officiellement en charge les types scalaires (int, bool, float, string) et les types de valeur de retour (Le type déclarable est le même que le paramètre) déclaration. A partir de cette version, à l'exception des différences de syntaxe, les déclarations de fonctions peuvent être formellement faites comme des langages fortement typés.

Malheureusement, si la valeur de retour de la fonction peut être nulle, le type de valeur de retour ne peut pas être spécifié. Par exemple :

function getModel() : Foo {
    if ($this->_model === null) {
         $this->_model = xxxx;  // get from db or otherelse
    }
    return $this->_model;     // 如果$this->_model仍是null,运行出错
}
Copier après la connexion

Les paramètres et les valeurs de retour peuvent être nuls et nuls, déclaration de type de retour (PHP 7.1)

Lorsque les types de paramètres et de valeurs de retour peuvent être nuls, le type est précédé de un point d'interrogation (?) La modification peut résoudre le problème des valeurs nulles (n'entre pas en conflit avec les paramètres par défaut) ; la déclaration de type ajoute un itérable et prend également en charge les valeurs de retour de type void. Par exemple :

function getModel(?int $id) : ?Foo {
    if ($id !== null) {
        $this->_model = xxxx;
    } else {
        $this->_model = yyyy;
    }
    return $this->_model;
}
// 调用
$foo->getModel(null);
$foo->getModel(100);
// 函数声明了参数并且没有提供默认参数,调用时不传入参数会引发错误
// 将函数声明改成 getModel(?int $id = 100) {},可以不传参数
$foo->getModel();
Copier après la connexion

Lorsque la valeur de retour de la fonction est void, le corps de la fonction ne peut rien renvoyer (l'écriture de return void ; est également fausse !), ou l'instruction return peut être omise.

function test(array $arr) : void {
    if (!count($arr) {
        return;
    }
    // 不要return;
    array_walk($arr, function ($elem) {xxxx});
}
Copier après la connexion

En regardant les changements historiques ci-dessus, nous pouvons voir que la déclaration des types de fonctions a été très complète dans PHP 7.1 (même si elle n'est pas beaucoup utilisée dans la pratique). Notez que l'article parle des déclarations de types de paramètres et de valeurs de retour. PHP ne garantit pas que les types de paramètres restent inchangés pendant le fonctionnement, c'est-à-dire que le code suivant est légal :

function foo(array $arr) : array {
    // change $arr from array to int
    $arr = 3;
    return [];
}
Copier après la connexion

De ce point de vue, PHP est encore un langage faiblement typé, la compilation statique ne peut pas être effectuée.

Parlons des pièges rencontrés dans la pratique. Selon la documentation officielle, les types disponibles pour les déclarations de paramètres de fonction et de types de valeurs de retour sont :

● class/interface

● self, qui ne peut être utilisé que sur ses propres méthodes

Quantity array

Quantity bool

Quantity callable

Quantity int

Quantity float

Quantity string

● itérable

● void (utilisé uniquement pour la valeur de retour)

Notez qu'il n'y a pas de types booléens et doubles dans la liste ! À moins que vous ne définissiez ces deux types, il est erroné de les utiliser dans les paramètres et les valeurs de retour !

C'est aussi là que PHP est un peu pénible. Les deux mots-clés double et float en utilisation normale sont presque les mêmes. Par exemple, doubleval est un alias de floatval, is_double est un alias de is_float et (double) et (float) ont le même effet lors de la conversion. Mais c'est différent lorsqu'il est utilisé dans des déclarations de type. La même situation se produit avec bool et boolean.

Résumé

À l'heure actuelle, la version stable de PHP 7.2 a été publiée. Il est recommandé d'utiliser autant que possible PHP 7.1 et les versions ultérieures dans les nouveaux projets. Afin d'écrire du code clair et maintenable, les types déclaratifs sont recommandés. Il est recommandé d'utiliser des valeurs nulles uniquement pour les types de référence ou les chaînes, et d'essayer de ne pas utiliser null pour les paramètres de type scalaire tels que int/float. Essayez de ne pas utiliser func_get_argc et d'autres fonctions sauf si nécessaire.

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Comment optimiser l'effet de chargement paresseux des images via les fonctions php ? Comment optimiser l'effet de chargement paresseux des images via les fonctions php ? Oct 05, 2023 pm 12:13 PM

Comment optimiser l'effet de chargement paresseux des images via les fonctions PHP ? Avec le développement d’Internet, le nombre d’images dans les pages Web augmente, ce qui exerce une pression sur la vitesse de chargement des pages. Afin d'améliorer l'expérience utilisateur et de réduire le temps de chargement, nous pouvons utiliser la technologie de chargement différé d'image. Le chargement paresseux des images peut retarder le chargement des images. Les images ne sont chargées que lorsque l'utilisateur fait défiler vers la zone visible, ce qui peut réduire le temps de chargement de la page et améliorer l'expérience utilisateur. Lors de l'écriture de pages Web PHP, nous pouvons optimiser l'effet de chargement paresseux des images en écrivant certaines fonctions. Détails ci-dessous

Comment réduire l'utilisation de la mémoire grâce aux fonctions php ? Comment réduire l'utilisation de la mémoire grâce aux fonctions php ? Oct 05, 2023 pm 01:45 PM

Comment réduire l'utilisation de la mémoire grâce aux fonctions PHP. En développement, l'utilisation de la mémoire est une considération très importante. Si une grande quantité de mémoire est utilisée dans un programme, cela peut provoquer des ralentissements, voire des plantages du programme. Par conséquent, gérer et réduire raisonnablement l’utilisation de la mémoire est un problème auquel tout développeur PHP doit prêter attention. Cet article présentera quelques méthodes pour réduire l'utilisation de la mémoire via les fonctions PHP et fournira des exemples de code spécifiques pour référence aux lecteurs. Utilisez la fonction unset() pour libérer des variables en PHP Lorsqu'une variable n'est plus nécessaire, utilisez.

Introduction à la fonction PHP — curl_multi_getcontent() : récupère le contenu d'une session cURL Introduction à la fonction PHP — curl_multi_getcontent() : récupère le contenu d'une session cURL Jul 26, 2023 pm 03:01 PM

Introduction à la fonction PHP — curl_multi_getcontent() : récupère le contenu d'une session cURL. Dans le développement PHP, nous avons souvent besoin de demander des données à d'autres serveurs via le réseau. Et cURL (ClientURL) est une puissante bibliothèque d'extensions PHP utilisée pour la communication réseau en PHP. cURL fournit une série de fonctions, dont curl_multi_getcontent(), qui est utilisée pour obtenir le contenu d'une session cURL.

PHP obsolète : la fonction ereg_replace() est obsolète - Solution PHP obsolète : la fonction ereg_replace() est obsolète - Solution Aug 18, 2023 am 10:48 AM

PHPDeprecated : Functionereg_replace()isdeprecated-Solution Lors du développement en PHP, nous rencontrons souvent le problème de certaines fonctions déclarées obsolètes. Cela signifie que dans les dernières versions de PHP, ces fonctions peuvent être supprimées ou remplacées. Un exemple courant est la fonction ereg_replace(). ereg_replace

Résumé des méthodes d'implémentation des fonctions d'édition et de traitement d'images à l'aide des fonctions de traitement d'images PHP Résumé des méthodes d'implémentation des fonctions d'édition et de traitement d'images à l'aide des fonctions de traitement d'images PHP Nov 20, 2023 pm 12:31 PM

Les fonctions de traitement d'images PHP sont un ensemble de fonctions spécifiquement utilisées pour traiter et éditer des images. Elles fournissent aux développeurs de riches fonctions de traitement d'images. Grâce à ces fonctions, les développeurs peuvent mettre en œuvre des opérations telles que le recadrage, la mise à l'échelle, la rotation et l'ajout de filigranes aux images pour répondre aux différents besoins de traitement d'image. Tout d'abord, je vais vous présenter comment utiliser les fonctions de traitement d'image PHP pour implémenter la fonction de recadrage d'image. PHP fournit la fonction imagecrop(), qui peut être utilisée pour recadrer des images. En passant les coordonnées et la taille de la zone de recadrage, on peut recadrer l'image

Introduction aux fonctions PHP : fonction strtr() Introduction aux fonctions PHP : fonction strtr() Nov 03, 2023 pm 12:15 PM

Introduction à la fonction PHP : fonction strtr() En programmation PHP, la fonction strtr() est une fonction de remplacement de chaîne très utile. Il est utilisé pour remplacer les caractères ou chaînes spécifiés dans une chaîne par d'autres caractères ou chaînes. Cet article présentera l'utilisation de la fonction strtr() et donnera quelques exemples de code spécifiques. La syntaxe de base de la fonction strtr() est la suivante : strtr(string$str, array$replace) où $str est le mot d'origine à remplacer.

Comparer les fonctions PHP aux fonctions dans d'autres langages Comparer les fonctions PHP aux fonctions dans d'autres langages Apr 10, 2024 am 10:03 AM

Les fonctions PHP présentent des similitudes avec les fonctions d’autres langages, mais possèdent également des fonctionnalités uniques. Syntaxiquement, les fonctions PHP sont déclarées avec function, JavaScript est déclaré avec function et Python est déclaré avec def. En termes de paramètres et de valeurs de retour, les fonctions PHP acceptent des paramètres et renvoient une valeur. JavaScript et Python ont également des fonctions similaires, mais la syntaxe est différente. En termes de portée, les fonctions en PHP, JavaScript et Python ont toutes une portée globale ou locale, accessibles de n'importe où, et les fonctions locales ne sont accessibles que dans la portée de leur déclaration.

Quelle est la performance des fonctions PHP ? Quelle est la performance des fonctions PHP ? Apr 18, 2024 pm 06:45 PM

Les performances des différentes fonctions PHP sont cruciales pour l’efficacité des applications. Les fonctions offrant de meilleures performances incluent echo et print, tandis que les fonctions telles que str_replace, array_merge et file_get_contents ont des performances plus lentes. Par exemple, la fonction str_replace est utilisée pour remplacer des chaînes et a des performances modérées, tandis que la fonction sprintf est utilisée pour formater des chaînes. L'analyse des performances montre qu'il ne faut que 0,05 milliseconde pour exécuter un exemple, prouvant que la fonction fonctionne bien. Par conséquent, une utilisation judicieuse des fonctions peut conduire à des applications plus rapides et plus efficaces.

See all articles