PHPDoc é uma convenção de comentários estruturados para PHP. Usada logo antes de classes, funções, métodos, propriedades e constantes para descrever seu comportamento, tipos e propósito.
Exemplo básico:
/**
* Soma dois números.
*
* @param int $a Primeiro número
* @param int $b Segundo número
* @return int Resultado da soma
*/
function soma($a, $b) {
return $a + $b;
}
Tags disponiveis:
| @access | acesso |
| @api | api |
| @author | autor |
| @copyright | direito autoral |
| @deprecated | descontinuado |
| @example | exemplo |
| @generated | gerado |
| @ignore | ignorar |
| @internal | interno |
| @link | link |
| @method | metodo |
| @package | pacote |
| @param | parametro |
| @property | propriedade |
| @return | retorna |
| @see | Vejo |
| @since | Desde a |
| @throws | arremessa |
| @todo | pendência |
| @uses | usa |
| @var | variavel |
| @version | versão |
Aqui estão as mais usadas na prática, com exemplos e quando usar:
| Tag | Quando Usar | Exemplo |
|---|---|---|
@param |
Antes de cada parâmetro de função/método | @param string $nome Nome do usuário |
@return |
Descreve o que a função retorna | @return bool Verdadeiro se válido |
@var |
Declara tipo de uma propriedade ou variável | @var int |
@throws |
Quando a função pode lançar uma exceção | @throws InvalidArgumentException |
@author |
Nome do autor do código | @author João |
@since |
Desde que versão existe | @since 1.0.0 |
@deprecated |
Se o código está obsoleto e será removido | @deprecated use outraFuncao() |
@see |
Referência relacionada | @see outraFuncao() |
@link |
Link para doc ou referência externa | @link https://exemplo.com/docs |
@todo |
Anotar tarefas pendentes | @todo otimizar desempenho |
@uses |
Quando outra função/classe é usada aqui | @uses TemplateManager::path() |
@example |
Mostrar exemplo de uso | @example examples/ex1.php |
@internal |
Esconde da documentação gerada (uso interno) | @internal |
Menos usadas:
-
@access:public,private,protected— já é desnecessária no PHP moderno, pois o acesso é declarado diretamente (public, etc.). -
@api: marca como parte da API pública (ex: SDK) -
@generated: normalmente usada por ferramentas automatizadas -
@ignore: oculta da documentação -
@package/@subpackage: usado em projetos grandes, geralmente junto com autoloaders (como Composer) -
@property: descreve propriedades mágicas (__get,__set) -
@method: descreve métodos mágicos (__call) ou dinâmicos -
@version: versão da classe ou biblioteca