Maison  >  Article  >  développement back-end  >  Fonctionnalité d'indication de type dans PHP7 : comment éviter les erreurs de type courantes ?

Fonctionnalité d'indication de type dans PHP7 : comment éviter les erreurs de type courantes ?

WBOY
WBOYoriginal
2023-10-20 08:52:59584parcourir

PHP7中的Type Hinting特性:如何防止常见的类型错误?

Fonctionnalité d'indication de type dans PHP7 : comment éviter les erreurs de type courantes ?

Les erreurs de type sont l'une des erreurs les plus courantes dans les langages de programmation. PHP7 a introduit la fonctionnalité Type Hinting, qui permet aux développeurs de spécifier le type de paramètres et le type de valeur de retour de la fonction dans la déclaration de fonction. La fonctionnalité Type Hinting peut non seulement augmenter la lisibilité du code, mais également réduire l’apparition d’erreurs de type. Cet article explique comment utiliser la fonctionnalité Type Hinting dans PHP7 et donne quelques exemples d'erreurs de type courantes et comment les éviter grâce au Type Hinting.

1. Indication de type des types de paramètres
Dans PHP5 et les versions précédentes, les développeurs ne peuvent pas spécifier directement le type de paramètres dans la déclaration de fonction. Cela entraîne la nécessité de vérifier manuellement le type de paramètre et de le gérer en conséquence dans la fonction. Lorsque le type de paramètre est incorrect, cela peut facilement conduire à des résultats erronés. En PHP7, vous pouvez utiliser Type Hinting pour spécifier le type de paramètres, et le moteur PHP vérifiera automatiquement si les types de paramètres répondent aux exigences lors de l'appel de la fonction.

  1. Indice de type des types de base
    Pour les types de base (tels que les chaînes, les entiers, les nombres à virgule flottante, etc.), vous pouvez utiliser la syntaxe suivante pour l'indice de type :
function greet(string $name) {
    echo "Hello, " . $name;
}

greet("Alice"); // 正确:输出 Hello, Alice
greet(123);    // 错误:参数类型错误,会抛出类型错误(TypeError)异常

Dans le code ci-dessus, la fonction greet Le paramètre $name utilise le Type Hinting de type string. Lorsque nous appelons la fonction greet en passant une chaîne en paramètre, aucune erreur ne sera générée. Mais si nous transmettons un entier, une exception d’erreur de type sera levée. greet的参数$name使用了string类型的Type Hinting。当我们传入一个字符串作为参数调用greet函数时,不会产生任何错误。但如果我们传入一个整数,就会抛出类型错误异常。

  1. 类型声明的Type Hinting
    除了基本类型,还可以使用自定义类作为参数的Type Hinting。比如,我们有一个User类,可以使用以下方式对函数进行Type Hinting:
class User {
  private $name;

  public function __construct(string $name) {
    $this->name = $name;
  }

  public function getName(): string {
    return $this->name;
  }
}

function welcome(User $user) {
  echo "Welcome, " . $user->getName();
}

$user = new User("John");
welcome($user);  // 正确:输出 Welcome, John
welcome("Alice");  // 错误:参数类型错误,会抛出类型错误(TypeError)异常

在上述代码中,函数welcome的参数$user使用了User类的Type Hinting。我们创建了一个名为John的用户,并将其作为参数传递给welcome函数。这样不会产生任何错误。但是,当我们传入一个字符串Alice时,就会抛出类型错误异常。

二、返回值类型的Type Hinting
除了参数类型的Type Hinting外,PHP7还允许对函数的返回值进行Type Hinting。通过指定函数的返回值类型,可以确保函数返回的结果符合预期,防止潜在的类型错误。

function double(int $num): int {
  return $num * 2;
}

$result = double(5);
echo $result; // 正确:输出10

$result = double("Hello");
echo $result; // 错误:返回值类型错误,会抛出类型错误(TypeError)异常

在上述代码中,函数double的返回值使用了int类型的Type Hinting。当我们传入一个整数作为参数调用double函数时,返回值也是一个整数,不会产生任何错误。但是,当我们传入一个字符串Hello时,返回值类型错误,就会抛出类型错误异常。

三、特殊情况的Type Hinting

  1. NULL Type Hinting
    在PHP7中,可以使用?符号来指定参数或返回值可以为NULL。如果一个参数被标记为?string,则表示它可以是一个字符串,也可以为NULL。
function foo(?string $name): void {
  if ($name !== null) {
    echo "Hello, " . $name;
  } else {
    echo "Hello, Guest";
  }
}

foo(null);    // 正确:输出Hello, Guest
foo("Alice"); // 正确:输出Hello, Alice
  1. Any Type Hinting
    在PHP7中,还可以使用mixed
    1. Type Hinting de déclaration de type
    En plus des types de base, vous pouvez également utiliser le Type Hinting de classes personnalisées comme paramètres. Par exemple, nous avons une classe User, et vous pouvez utiliser la méthode suivante pour effectuer un Type Hinting sur la fonction :

    function bar(mixed $value): void {
      echo "The value is " . $value;
    }
    
    bar("Hello");  // 正确:输出The value is Hello
    bar(123);      // 正确:输出The value is 123
    🎜Dans le code ci-dessus, le paramètre $user de la fonction <code>welcome Utilise l'indication de type de la classe User. Nous créons un utilisateur nommé John et le passons en paramètre à la fonction welcome. Cela ne produira aucune erreur. Cependant, lorsque nous transmettons une chaîne Alice, une exception d'erreur de type est levée. 🎜🎜2. Type Hinting du type de valeur de retour🎜En plus du Type Hinting du type de paramètre, PHP7 permet également le Type Hinting de la valeur de retour de la fonction. En spécifiant le type de valeur de retour d'une fonction, vous pouvez vous assurer que les résultats renvoyés par la fonction sont conformes aux attentes et éviter d'éventuelles erreurs de type. 🎜rrreee🎜Dans le code ci-dessus, la valeur de retour de la fonction double utilise le Type Hinting du type int. Lorsque nous passons un entier en paramètre pour appeler la fonction double, la valeur de retour est également un entier et aucune erreur ne sera générée. Cependant, lorsque nous transmettons une chaîne Bonjour et que le type de valeur de retour est incorrect, une exception d'erreur de type sera levée. 🎜🎜3. Cas particulier Type Hinting🎜🎜🎜NULL Type Hinting🎜En PHP7, vous pouvez utiliser le symbole ? pour spécifier que le paramètre ou la valeur de retour peut être NULL. Si un paramètre est marqué comme ?string, cela signifie qu'il peut être une chaîne ou NULL. 🎜🎜rrreee
      🎜Any Type Hinting🎜En PHP7, vous pouvez également utiliser le mot-clé mixed pour représenter n'importe quel type de paramètre ou de valeur de retour. Cela signifie que le type du paramètre peut être de n’importe quel type et qu’aucune vérification de type n’est effectuée. 🎜🎜rrreee🎜Type Hinting fournit aux développeurs PHP un moyen concis et puissant d'éviter les erreurs de type courantes. En utilisant correctement la fonctionnalité Type Hinting, nous pouvons facilement réduire l’apparition d’erreurs de type et améliorer la fiabilité et la maintenabilité du code. Cependant, il convient de noter que le Type Hinting ne peut pas éliminer complètement les erreurs de type, et les programmeurs doivent toujours être prudents lorsqu'ils écrivent du code et effectuer suffisamment de tests. 🎜

    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