2012-11-18 17 views
23

Istnieją już 2 podobne pytania tego typu na stronie SO, ale żadna z odpowiedzi nie wydaje się działać.Parametr opcjonalny PHPDoc

PHPDoc nie wydaje się rozpoznać opcjonalne parametry w mojej funkcji jako opcja, na przykład:

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

nie powinni uznać $ kodowanie jako opcja albo ja czegoś tu brakuje? Naprawdę starałem się google i przeczytać dokumentację ale znalazłem to:

Jeśli nie wskazując w rzeczywistym kodu, który parametr jest opcjonalny (przez „$ ParamName =«wartość domyślną»”), a następnie powinieneś wspomnieć w opisie parametru, że parametr jest opcjonalny.

Więc nie widzę problemu z mojego kodu, ale mam w dokumentacji jest: „__construct ($ kodowania string)”, nigdzie śladu, że parametr jest opcjonalny.

Odpowiedz

28

Ściśle mówiąc, PHP nie zna "parametrów opcjonalnych", ale parametry z wartościami domyślnymi, które można pominąć, gdy wywoływana jest funkcja lub metoda. OK, to na końcu opcjonalny parametr, ale twoje tutaj jest całkowicie poprawne, ponieważ domyślną wartością jest ciąg znaków. Co dokumentacja próbuje powiedzieć, że należy go wymienić się jak

@param string $encoding (optional) Encoding. 

zgadzam się z tobą, że notacja jak

__construct([$encoding]) 

lub

__construct($encoding = 'UTF-8') 

byłoby miło. Możesz pisać raport o błędzie

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

Update: Zrealizowany, że to już wspomniano https://github.com/phpDocumentor/phpDocumentor2/search?q=optional&type=Issues

+0

Ok, mój zły niż. Wiedziałem, że PHPDocumentor już wbudował tę funkcję i myślałem, że robię coś złego. Zachowa to na jakiś czas na wypadek, gdyby ktoś wkrótce pojawił się z nowymi informacjami, jeśli nie zaakceptował twojej odpowiedzi. Dzięki –

+2

Wsparcie dodane do najnowszej wersji PHPDocumentor. Zobacz https://github.com/siad007/template.clean/commit/fe6f9c9b09799299e15b0a5c33c6325068de9609 – techdude

+1

Czy można to zaktualizować za pomocą nowej adnotacji? Żadne z podanych tutaj linków nie ma oczywistych odpowiedzi. – oskarth

Powiązane problemy