web-dev-qa-db-fra.com

Que signifie @param dans une classe?

Que signifie @param lors de la création d'une classe? Autant que je sache, il est utilisé pour indiquer au script le type de type de données que sont les variables et le type de valeur renvoyé par une fonction, est-ce exact? Par exemple:

/**
 * @param string $some
 * @param array $some2
 * @return void
 */

N’y at-il pas une autre façon de faire cela, je pense à des choses comme: void function() { ... } ou quelque chose comme ça. Et pour les variables, peut-être (int) $ test;

18
phpheini

@param n'a pas de signification particulière en PHP, il est généralement utilisé dans un commentaire pour écrire de la documentation. L'exemple que vous avez fourni montre justement cela.

Si vous utilisez un outil de documentation, le code sera parcouru à la recherche de @param, @summary et d'autres valeurs similaires (en fonction de la sophistication de l'outil) afin de générer automatiquement une documentation correctement formatée pour le code.

21
zzzzBov

Comme d'autres l'ont mentionné, le @param auquel vous faites référence fait partie d'un commentaire et n'est pas syntaxiquement significatif. C'est simplement là pour fournir des astuces à un générateur de documentation. Pour plus d'informations sur les directives et la syntaxe prises en charge, consultez le projet PHPDoc .

En ce qui concerne la deuxième partie de votre question ... Autant que je sache, il n’existe aucun moyen de spécifier le type de retour en PHP. Vous ne pouvez pas non plus forcer les paramètres à être d'un type primitif spécifique (chaîne, entier, etc.).

Vous pouvez toutefois exiger que les paramètres soient un tableau, un objet ou un type d'objet spécifique à partir de PHP 5.1 ou plus.

function importArray(array $myArray)
{
}

PHP lancera une erreur si vous essayez d'appeler cette méthode avec autre chose qu'un tableau.

class MyClass
{
}

function doStuff(MyClass $o)
{
}

Si vous essayez d'appeler doStuff avec un objet de n'importe quel type, à l'exception de MyClass, PHP lève encore une erreur.

2
NuclearDog

Je sais que c'est vieux, mais juste pour référence, la réponse à la deuxième partie de la question est maintenant, PHP7.

// this function accepts and returns an int
 function age(int $age): int{

  return 18;
}
2
fs_tigre

PHP est totalement inconscient des commentaires. Il est utilisé pour décrire les paramètres que la méthode prend uniquement pour rendre le code plus lisible et compréhensible.

De plus, les bonnes pratiques de code consomment l'utilisation de certains noms (tels que @param) pour les générateurs de documentation.

Certains IDE incluront le @param et d'autres informations dans l'info-bulle lors de l'utilisation du survol sur la méthode correspondante.

1
kba

@param fait partie du commentaire de description qui vous indique le type de paramètre d'entrée. Cela n'a rien à voir avec la syntaxe du code. Utilisez un éditeur de couleurs pris en charge, tel que Notepad ++, pour voir facilement le code et les commentaires.

0
tim