PHPDoc je upravený dokumentační standard Javadoc pro použití v PHP .
Standard pro komentáře má sice pouze formální status, ale plánuje se jeho konsolidace jako jeden z vývojových standardů pro frameworky PHP vyvíjené skupinou PHP-FIG. Připravovaná norma dostane číslo PSR-5 [1] . PHPDoc podporuje jak objektově orientovaný , tak procedurální kód v dokumentech.
Pro interpretaci kódu byl vytvořen samostatný program phpDocumentor .
phpDocumentor je aplikace schopná analyzovat zdrojový kód PHP a komentáře DocBlock za účelem generování kompletní sady dokumentace API [2] .
Doc-blocks ( angl. DocBlock comments ) jsou víceřádkové komentáře ve stylu jazyka C umístěné před dokumentovaným prvkem. První znak v komentáři (a na začátku řádků komentáře) musí být * . Bloky jsou odděleny prázdnými řádky.
Příklad bloku Doc pro funkci foo():
/** * @param string $msg řetězec na výstup * @author WikiEditor * @copyright 2016 Wikipedia * @return string nezměněn */ function foo ( $msg = '' ) { return $msg ; }Aktuální verze PHPDocumentator 3, Repository
Při vývoji vlastních velkých projektů, jejichž všechny jemnosti nelze mít na paměti, stejně jako při finalizaci cizích projektů, musíte často nakouknout do dříve napsaného kódu. To vám umožní přesněji si představit vrácené, vytvořené objekty a co s nimi můžete dělat. Vzhledem k tomu, že PHP má implicitní přetypování typu , jsou při operacích prováděných na objektech různých typů potenciálně možné chyby. V silně typizovaných jazycích se to nestane - program se prostě nezkompiluje.
Aby se tomu zabránilo, používá se PHPDoc a další podobné technologie. Řekněme, že máme kód :
... $eventData = new EventData (); $eventData -> sender = $controller ; $eventData -> name = 'onDelete' ; $eventData -> group = 'global' ; $eventData -> argumenty = pole ( 'id' => 15 ); $eventDispatcher -> triggerEvent ( $eventData ); ...Vývojář třetí strany, který čte tento kód, nemusí vědět, co $controller obsahuje, ale IDE mu řekne, zda podporuje PHPDoc. Tedy zadáním: $controller->- můžeme vidět, co je uvnitř. Díky tomu není potřeba pronikat do džungle kódu, abyste zjistili, co je tímto objektem předáváno a v jakém typu.