eric
eric

Reputation: 4951

What's the meaning of @var in php comments

I see this (@var) in php comments a lot and have no clue what it means. Please tell.

// 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>

Upvotes: 31

Views: 49952

Answers (5)

CosminO
CosminO

Reputation: 5226

You may use the @var tag to document the data type of class variables.

The datatype should be a valid PHP type (int, string, bool, etc), a class name for the type of object, or simply "mixed". phpDocumentor will display the optional description unmodified, and defaults to "mixed" if the datatype is not present

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

With the @var tag it is possible to document the type and function of a class property. When provided it MUST contain a Type to indicate what is expected; the description on the other hand is OPTIONAL yet RECOMMENDED in case of complicated structures, such as associative arrays.

The @var tag MAY have a multi-line description and does not need explicit delimiting.

It is RECOMMENDED when documenting to use this tag with every property.

This tag MUST NOT occur more than once per property in a PHPDoc and is limited to Structural Elements of type property.

Example:

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();
}

Upvotes: 29

jfx
jfx

Reputation: 383

This is how it needs to be specified for arrays:

/**
 * @var MyDto[]
 */

Upvotes: 0

George Reith
George Reith

Reputation: 13476

It is in an inline type hint.

e.g.

/* @var bool */
$switch

In this case it means $this is of type CategoriesController and $data is of type Categories

Often used by IDEs for type hinting.

Upvotes: 5

Lusitanian
Lusitanian

Reputation: 11122

They are PHPdoc comments and are generally used for IDE-typehinting/code completion (also sometimes documentation-generation, but not in this scenario). They have no relevance on the application itself and can be removed without incident.

Upvotes: 9

Sune Trudslev
Sune Trudslev

Reputation: 974

That is phpdoc, to make automated documentation:

phpdoc

Upvotes: 1

Related Questions