¿Cuál es la forma correcta de escribir PHPDocs para constantes?


Tengo este código:

/**
 * Days to parse
 * @var int
 */
const DAYS_TO_PARSE = 10;
...

No creo que usar @var sea correcto para una constante y no veo ninguna etiqueta PHPDoc @constant. ¿Cuál es la forma correcta de hacer esto?

 57
Author: aalaap, 2011-07-15

6 answers

Para entrar en PHPDoc, utilice:

@const THING

Construcción habitual:

@const[ant] label [description]
 -5
Author: Brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-15 11:04:28

@const es no la respuesta correcta.

El único lugar "oficial" que aparece es phpdoc.de, pero la especificación allí solo llegó a 1.0 beta, y el sitio también incluye etiquetas como @brother y @sister, que nunca he visto usar antes, por lo que la confianza general en ese sitio se ve algo disminuida ; -) El de facto estándar siempre ha sido phpDoc.org.

En resumen, incluso si algún estándar no oficial lo menciona, si el los generadores de documentación no lo soportan, entonces no vale la pena usarlo.

@var es correcto por ahora, y una vez que el PSR (último enlace en la lista anterior) está fuera de borrador, y es la base para la cual phpDocumentor, Doxygen, APIGen y otros están entendiendo PHPDoc, entonces @type sería correcto, que es el sucesor de @var.

 102
Author: GaryJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-28 14:26:47

El PHP-FIG sugiere usar @var para constantes.

7.22. @var

Puede usar la etiqueta @var para documentar el "Tipo" de lo siguiente "Elementos Estructurales":

  • Constantes, tanto de clase como de alcance global
  • Propiedades
  • Variables, tanto de alcance global como local

Sintaxis

@var ["Type"] [element_name] [<description>]

 87
Author: user2983026,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-13 11:30:40

Uso Netbeans. Analizará PHPDoc para constantes globales y de clase cuando se use este formato:

/** @const Global constant description */
define('MY_CONST', 10);

class MyClass
{
    /** @const Class constant description */
    const MY_CONST = 10;
}
 2
Author: Sonny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-04 16:13:13

La siguiente proposición respeta la sintaxis de la documentación oficial :

class Foo
{
    const
        /**
         * @var string Should contain a description
         */
        MY_CONST1 = "1",
        /**
         * @var string Should contain a description
         */
        MY_CONST2 = "2";

}
 2
Author: Kwadz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-07 09:38:19

No hay necesidad de escribir constantes, ya que el tipo de la constante es siempre un escalar o matriz, conocido en la declaración y no puede cambiar.

@const tampoco forma parte del estándar PHPDoc. PHP-FIG sugiere @var pero esto no es usado por PHPDoc y no agrega ninguna información que no pueda deducir de la propia declaración.

Por lo tanto, en aras de la legibilidad, recomiendo usar un docblock PHPDoc simple para documentar sus constantes:

class Foo
{
    /** This is a constant */
    const BAR = 'bar';
}
 0
Author: Yogarine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-20 09:42:51