Maison >développement back-end >tutoriel php >Tapez la conduite en php
Points clés
is_string()
ou is_int()
peuvent être utilisées pour augmenter une erreur ou lancer une exception. En commençant par PHP 5, vous pouvez utiliser des invites de type pour spécifier le type de données de données attendues dans une déclaration de fonction. Lorsque vous appelez une fonction, PHP vérifie si le paramètre est du type spécifié. Sinon, le runtime augmentera une erreur et arrêtera l'exécution. Les types valides incluent le nom de classe de l'objet récepteur et le array
du tableau de réception. Voici un exemple:
<code class="language-php"><?php function enroll(Student $student, School $school) { echo "Enrolling " . $student->name . " in " . $school->name; } ?></code>
En disant à la méthode PHP enroll()
quel type d'objet que vous vous attendez à recevoir, vous pouvez vous assurer que les élèves sont inscrits dans une école plutôt qu'un monastère ou un plan 401k. Encore une fois, vous savez qu'il n'y aura pas de pachydermes tenaces apparaissant le premier jour de la troisième année. Que se passe-t-il si j'essaie de m'inscrire auprès de Medicare?
<code class="language-php"><?php $me = new Student("Amanda"); $medicare = new Program("Medicare"); $enroll = enroll($me, $medicare); ?></code>
Bien que je sois étudiant, l'erreur suivante se produit:
<code>Catchable fatal error: Argument 2 passed to enroll() must be an instance of School, instance of Program given, called in typehint.php on line 32 and defined in typehint.php on line 6</code>
Si <cod>null</cod>
est utilisé comme valeur par défaut du paramètre, il sera également autorisé. Voici un exemple, cette fois en utilisant un tableau:
<code class="language-php"><?php function startParty(array $guests, array $food = null) { // party stuff... } $guests = array("Susan Foreman", "Sarah Jane Smith", "Rose Tyler", "Donna Noble"); startParty($guests, null); ?></code>
Tant qu'il y aura des invités, il y aura des fêtes, qu'il y ait ou non de la nourriture.
Limites des pointes de type
Toute classe définie peut être une invite de type valide, bien que PHP ne prenne pas en charge les invites de type pour les objets génériques. Qu'en est-il des autres situations? Voici un exemple spécial sur les limites des invites de type PHP:
<code class="language-php"><?php function stringTest(string $string) { echo $string; } stringTest("definitely a string"); ?></code>
<code>Catchable fatal error: Argument 1 passed to stringTest() must be an instance of string, string given, called in typehint.php on line 42 and defined in typehint.php on line 39</code>
Vous n'êtes pas le premier à penser "Qu'est-ce qui est fou? Je vous ai donné une instance de chaîne, mais vous vous plaignez que ce doit être une instance de chaîne!" C'est une chose commune. En fait, à première vue, cela peut être un message d'erreur plutôt déroutant. stringTest()
ne recherche pas des chaînes, mais des instances de classes de chaînes. L'invite de type PHP ne prend pas en charge les types de données scalaires, telles que les chaînes ou les valeurs entières. Mais ça va! Si vous devez augmenter une erreur ou lancer une exception lorsque l'argument n'est pas un type scalaire (comme une chaîne ou un entier), vous pouvez effectuer une vérification de base à l'aide de fonctions telles que is_string()
ou is_int()
pour y parvenir.
guerre scalaire
Il existe certaines controverses dans l'ajout d'invites de type php scalaire à PHP 5.4. Les opposants au changement pensent que ce soutien violerait la conception de base de PHP. Le PHP est considéré comme une langue de type faible. Essentiellement, cela signifie que PHP ne vous oblige pas à déclarer le type de données. Les variables sont toujours associées au type de données auxquelles ils sont associés, mais vous pouvez faire quelque chose de radical, comme l'ajout de chaînes à des entiers sans causer d'erreurs. En mai 2010, une prise en charge des indices de type scalaire a été ajoutée à l'épine dorsale PHP. Mais en raison des réponses communautaires, cette fonctionnalité n'entrera pas sur la version 5.4.
Résumé
Les invites de type sont l'introduction de la technologie PHP pour la programmation orientée objet (en particulier pour identifier les types qui captent des exceptions). Je vous encourage à en savoir plus sur l'utilisation d'objets ici. Images de Carlos E. Santa Maria / Shutterstock
PHP Type Tips FAQ (FAQ)
PHP 中的类型提示是一个重要特性,允许开发者在函数声明中指定参数的预期数据类型。 Il améliore la robustesse du code en s'assurant que la fonction reçoit le type correct de valeurs numériques. Il en résulte moins de bogues et de vulnérabilités dans le code, ce qui le rend plus fiable et plus facile à déboguer. Il améliore également la lisibilité du code, ce qui permet aux autres développeurs de comprendre plus facilement les fonctions du code.
PHP prend en charge les invites de type pour une variété de types de données, y compris des objets, des tableaux, des interfaces, des callables et des itérables. Cependant, il convient de noter que PHP ne prend pas en charge les invites de type scalaire (int, float, string et bool) jusqu'à la version 7.0. En commençant par PHP 7.0, vous pouvez utiliser des invites de type pour tous les types de données.
PHP lancera une "erreur fatale" si le type de données du paramètre passé ne correspond pas à l'invite de type dans la déclaration de fonction. Cette erreur arrêtera l'exécution du script et empêchera tout traitement supplémentaire. C'est pourquoi vous devez vous assurer que le type de données correct est transmis à la fonction.
Dans PHP, les invites de type peuvent être utilisées avec l'héritage de la classe. Si une fonction attend des paramètres d'un type de classe spécifique, il acceptera également les instances de sous-classes de cette classe. En effet, une sous-classe est un type spécifique de sa classe parent, satisfaisant ainsi l'indice de type.
Non, l'invite de type en PHP ne peut être utilisée que pour les fonctions définies par l'utilisateur. Les invites de type ne sont pas prises en charge par les fonctions intégrées dans PHP. Cependant, ces fonctions ont souvent des mécanismes internes pour gérer différents types de données.
Le mode strict dans les invites de type PHP est une caractéristique introduite dans PHP 7.0. Lorsque le mode strict est activé, PHP applique la correspondance exacte des types de données en fonction des invites de type. Si le type de données du paramètre passé ne correspond pas exactement à l'invite de type, PHP lancera une "erreur fatale" même si le paramètre peut être jeté au type correct.
pour activer le mode strict en PHP, vous devez déclarer declare(strict_types=1);
en haut du fichier PHP. Cette déclaration doit être la première déclaration du script.
La différence entre les modes faibles et stricts dans les invites de type PHP est de savoir comment PHP traite de la décalage du type. En mode faible, si possible, PHP tentera de lancer les paramètres passés au type de données correct. En revanche, en mode strict, PHP n'essaiera pas de lancer des valeurs, et une "erreur fatale" sera lancée si les types de données ne correspondent pas exactement.
Oui, en commençant par PHP 7.0, vous pouvez utiliser des invites de type pour les valeurs de retour de fonction. Cette fonctionnalité vous permet de spécifier le type de données attendu de la valeur de retour de la fonction, améliorant ainsi la fiabilité et la lisibilité de votre code.
L'invite de type nullable est une fonctionnalité introduite dans PHP 7.1. Il vous permet de spécifier le paramètre de fonction ou la valeur de retour peut être du type spécifié ou NULL. Pour rendre l'invite de type vide, préfixez le nom de type avec un point d'interrogation (?). Par exemple, "? String" signifie que la valeur peut être une chaîne ou un nul.
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!