¿Cuál es el significado de @var en los comentarios de php?

2 minutos de lectura

avatar de usuario
eric

Veo esto (@var) en los comentarios de php mucho y no tengo ni idea de lo que significa. Informe a.

// example.php (taken from yii framework application code)

<?php
/* @var $this CategoriesController */
/* @var $data Categories */
?>

<div class="view">

    <b><?php echo CHtml::encode($data->getAttributeLabel('idCategory')); ?>:</b>
    <?php echo CHtml::link(CHtml::encode($data->idCategory), array('view', 'id'=>$data->idCategory)); ?>
    <br />
</div>

avatar de usuario
CosminO

Puede usar la etiqueta @var para documentar el tipo de datos de las variables de clase.

El tipo de datos debe ser un tipo de PHP válido (int, string, bool, etc.), un nombre de clase para el tipo de objeto o simplemente “mixto”. phpDocumentor mostrará la descripción opcional sin modificar, y el valor predeterminado es “mixto” si el tipo de datos no está presente

https://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.var.pkg.html

Con la etiqueta @var es posible documentar el tipo y función de una propiedad de clase. Cuando se proporciona, DEBE contener un Tipo para indicar lo que se espera; la descripción, por otro lado, es OPCIONAL pero RECOMENDADA en el caso de estructuras complicadas, como matrices asociativas.

La etiqueta @var PUEDE tener una descripción de varias líneas y no necesita una delimitación explícita.

Se RECOMIENDA al documentar usar esta etiqueta con cada propiedad.

Esta etiqueta NO DEBE aparecer más de una vez por propiedad en un PHPDoc y está limitada a elementos estructurales de tipo propiedad.

Ejemplo:

class DemoVar
{
   /**
    * Summary
    *
    * @var object Description
    */
   protected $varWithDescriptions;

   /**
    * @var \DemoVar $instance The class instance.
    */
   protected static $instance;

   /**
    * Summary for varWithWrongType
    *
    * @var boolean The varWithWrongType. Boolean will be put in the type.
    */
   protected $varWithWrongType = array();
}

Son comentarios de PHPdoc y generalmente se utilizan para la finalización de código/tecleo IDE (también a veces para la generación de documentación, pero no en este escenario). No tienen relevancia sobre la propia aplicación y pueden ser eliminados sin incidencias.

  • Hay muchos… en mi humilde opinión, el mejor es phpStorm (win/mac/linux) pero también hay netbeans y eclipse, entre otros.

    – lusitano

    28 de agosto de 2012 a las 12:22

  • Me has alegrado la mañana, amigo mío. Los revisaré.

    -Eric

    28 de agosto de 2012 a las 12:25

  • para las personas que buscan en Google hoy en día, consideren emacs con modo lsp

    – RichieHH

    16 de enero de 2020 a las 0:36

Está en una sugerencia de tipo en línea.

p.ej

/* @var bool */
$switch

En este caso significa $this es de tipo CategoriesController y $data es de tipo Categories

Los IDE suelen utilizarlo para sugerencias de tipo.

http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.var.pkg.html

Eso es phpdocpara realizar documentación automatizada:

phpdoc

avatar de usuario
jfx

Así es como debe especificarse para las matrices:

/**
 * @var MyDto[]
 */

¿Ha sido útil esta solución?