2012-11-18 11 views
23

Es gibt bereits 2 ähnliche Fragen dieses Typs hier auf SO aber keine der Antworten scheint zu funktionieren.PHPDoc optional Parameter

PHPDoc scheint nicht optionale Parameter in meinen Funktionen als optional zu erkennen, zum Beispiel:

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

Sollte es nicht $ encoding als optional erkennen oder bin ich etwas fehle hier? Ich habe versucht, wirklich Google und die Dokumentation zu lesen, aber alles, was ich gefunden ist:

Wenn Sie nicht in dem eigentlichen Code anzeigt, dass der Parameter optional ist (über „$ paramname =‚Standardwert‘“), dann Sie sollten in der Parameterbeschreibung angeben, dass der Parameter optional ist.

So sehe ich kein Problem mit meinem Code, aber alles, was ich in der Dokumentation zu bekommen ist: "__construct (string $ encoding)", kein Zeichen überall, dass Parameter sind optional.

Antwort

28

Genau genommen kennt PHP keine "optionalen Parameter", sondern Parameter mit Standardwerten, die beim Aufruf der Funktion oder Methode weggelassen werden können. OK, das ist am Ende ein optionaler Parameter, aber Ihre

@param string $encoding Encoding. 

ist völlig richtig hier, da der Standardwert eine Zeichenfolge ist. Was die Dokumentation versucht, Ihnen zu sagen, dass Sie es sich wie

erwähnen sollte
@param string $encoding (optional) Encoding. 

Ich stimme Ihnen zu, dass eine Notation wie

__construct([$encoding]) 

oder

__construct($encoding = 'UTF-8') 

wäre schön. Sie können einen Fehlerbericht

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

-Update veröffentlichen: Realisiert, dass dies bereits erwähnt https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues

+0

Ok, mein schlecht als. Ich habe PHPDocumentor gelernt, hatte diese Funktion bereits eingebaut und mir gesagt, dass ich etwas falsch mache. Wird es für eine Weile offen bleiben, falls jemand bald mit neuen Informationen auftaucht, wenn er Ihre Antwort nicht akzeptiert. Danke –

+2

Unterstützung hinzugefügt, um die neueste Version von PHPDocumentor. Siehe https://github.com/siad007/template.clean/commit/fe6f9c9b09799299e15b0a5c33c6325068de9609 – techdude

+1

Kann dies mit der neuen Anmerkung aktualisiert werden? Keiner der hier angegebenen Links hat offensichtliche Antworten. – oskarth