web-dev-qa-db-fra.com

Paramètre facultatif PHPDoc

Il y a déjà 2 questions similaires de ce type ici sur SO mais aucune des réponses ne semble fonctionner.

PHPDoc ne semble pas reconnaître les paramètres facultatifs dans mes fonctions comme facultatifs, par exemple:

/**
 * Opens the connection and sets encoding
 * 
 * @param string $encoding Encoding.
 */
public function __construct($encoding='UTF-8') 
{
    $this->connect_mysqli();
    $this->set_encoding_mysqli($encoding);
}

Ne devrait-il pas reconnaître que l'encodage $ est facultatif ou manque-t-il quelque chose ici? J'ai vraiment essayé de google et de lire la documentation mais tout ce que j'ai trouvé c'est:

Si vous n'indiquez pas dans le code réel que le paramètre est facultatif (via "$ paramname = 'a default value'"), vous devez mentionner dans la description du paramètre que le paramètre est facultatif.

Je ne vois donc aucun problème avec mon code, mais tout ce que j'obtiens dans la documentation est: "__construct (string $ encoding)", aucun signe n'importe où ce paramètre est facultatif.

31
user2742648

À strictement parler, PHP ne connaît pas les "paramètres facultatifs", mais les paramètres avec des valeurs par défaut, qui peuvent être omis lors de l'appel de la fonction ou de la méthode. OK, c'est à la fin un paramètre facultatif, mais votre

@param string $encoding Encoding.

est tout à fait correct ici, car la valeur par défaut est une chaîne. Ce que la documentation essaie de vous dire, c'est que vous devez le mentionner vous-même comme

@param string $encoding (optional) Encoding.

Je suis d'accord avec vous, qu'une notation comme

__construct([$encoding])

ou

__construct($encoding = 'UTF-8')

serait bien. Vous pouvez publier un rapport de bug

https://github.com/phpDocumentor/phpDocumentor2/issues?state=open

Mise à jour: réalisé, que cela déjà mentionné https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues

39
KingCrunch