@return in phpDoc bij method chaining
Code (php)
Wat hoort er in het commentaar achter @return?
Gewijzigd op 02/09/2013 13:45:37 door Ward van der Put
De class, of bij voorkeur wat mij betreft de interface.
Ik vind iets als
@return $this, for method chaining
meer dan duidelijk genoeg.
Nu, misschien bestaat er een standaard antwoord voor deze vraag; dat weet ik niet.
Ik vind dat fout geformatteerd commentaar dat wel duidelijk is, beter is dan goed geformatteerd commentaar waar niemand iets aan heeft.
Gewijzigd op 02/09/2013 14:03:03 door Kris Peeters
Code (php)
Wat zouden jullie dan het duidelijkst vinden?
• @return object
• @return $this
• @return object $this
• @return object User
• @return User
Op zich vind ik de optie van Kris wel interessant. Ik betwijfel alleen of het zo nodig is. In situaties waarin een object een object van dezelfde class (of interface) teruggeeft gaat het 9 van de 10 keer om chaining. Zeker in geval van een setter. Daarnaast is het commentaar in het doc bij voorkeur de plek om verduidelijking aan te brengen mocht dat nodig zijn. Het blijft immers commentaar, niet een voorschrift.
/**
* ... all setter methods return the User object, for method chaining
*/
Gewijzigd op 02/09/2013 15:23:28 door Kris Peeters
Quote:
15.'$this', the element to which this type applies is the same exact instance as the current Class in the given context. As such this type is a stricter version of 'static' as, in addition, the returned instance must not only be of the same Class but also the same instance.
This type is often used as return value for methods implementing the Fluent Interface design pattern.
This type is often used as return value for methods implementing the Fluent Interface design pattern.
Bron: https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc.md#keyword
Grappig om te zien dat we allemaal op ongeveer dezelfde lijn zitten. Dank allen!
Toevoeging op 02/09/2013 17:09:20:
Ik laat dit trouwens zelf altijd weg. Dat het $this returned is al heel duidelijk vanuit de code.
Wouter J op 02/09/2013 17:08:44:
Ik laat dit trouwens zelf altijd weg. Dat het $this returned is al heel duidelijk vanuit de code.
Daarin heb je wel gelijk, maar meestal kun je het beter expliciet maken. Bij methoden zonder return gebruik ik bijvoorbeeld toch vaak een @return null om aan te geven dat de uitkomst “by design” zo is en er geen bedrijfsongeval heeft plaatsgevonden :)
Ward van der Put op 02/09/2013 17:26:06:
... en er geen bedrijfsongeval heeft plaatsgevonden :)
:)
Merk op dat je dan beter [c]@return void[/c] kunt gebruiken.
Ik schrijf altijd PHPdocs om dingen duidelijk te maken die niet duidelijk zijn. Bijv. "Sets the name" bij een User#setName method vind ik zinloos. En [c]@param array $options[/c] wanneer de signature [c](array @options)[/c] bevat vind ik ook nutteloos.