¿Existe una sintaxis para documentar funciones que toman una única matriz de configuración, en lugar de parámetros individuales?PHPDoc para matrices de argumentos de longitud variable
Pienso específicamente en las bibliotecas de estilo CodeIgniter, que utilizan un mecanismo similar a esto:
<?php
//
// Library definition
//
class MyLibrary {
var $foo;
var $bar;
var $baz;
// ... and many more vars...
/* Following is how CodeIgniter documents their built-in libraries,
* which is mostly useless. AFAIK they should be specifying a name
* and description for their @param (which they don't) and omitting
* @return for constructors
*/
/**
* @access public
* @param array
* @return void
*/
function MyLibrary($config = array()) {
foreach ($config as $key => $value) {
$this->$key = $value;
}
}
}
//
// Library usage:
//
// Iniitialize our configuration parameters
$config['foo'] = 'test';
$config['bar'] = 4;
$config['baz'] = array('x', 'y', 'z');
$x = new MyLibrary($config);
?>
Así que mi pregunta es, ¿hay alguna manera supprted de documentar el arreglo de configuración más allá de la puramente textual ¿descripción? ¿Especificando realmente un @param [type] [name] [desc]
apropiado que permita que PHPDoc analice valores útiles?
Como un lado, CodeIgniter realmente solo sobrescribe sus propios valores con los que pasan a través de la matriz de $ config como se indica anteriormente, lo que permite derrotar a los miembros privados. No soy fan, pero estoy atrapado en eso.
Lo evitaría si pudiera, desafortunadamente las convenciones de CodeIgniter requieren este tipo de uso de matriz de configuración descuidado en lugar de, por así decirlo, los parámetros antiguos normales. – meagar
@meagar: sí, lo entendí, pero no pude resistir ^^ (y esto podría ser útil si alguien más, algún día, llega a esta pregunta/respuesta) –
Eso es similar a cómo lo hago. PHPDoc tomará la lista y la agregará a la documentación como cualquier otra cadena, por lo que es mejor que nada. Sin embargo, PDT no puede darle sentido. Simplemente sabrá que es una matriz. – Gordon