24

我在 php 评论中经常看到这个(@var),但不知道它是什么意思。请告诉。

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

6 回答 6

23

您可以使用@var 标签来记录类变量的数据类型。

数据类型应该是有效的 PHP 类型(int、string、bool 等)、对象类型的类名,或者简单地“混合”。phpDocumentor 将显示未修改的可选描述,如果数据类型不存在,则默认为“混合”

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

使用@var 标签可以记录类属性的类型和功能。当提供时,它必须包含一个类型来指示预期的内容;另一方面,描述是可选的,但建议在复杂结构的情况下使用,例如关联数组。

@var 标签可以有一个多行的描述并且不需要明确的分隔。

建议在记录时将此标签与每个属性一起使用。

此标记不得在 PHPDoc 中的每个属性中出现一次以上,并且仅限于类型属性的结构元素。

例子:

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();
}
于 2012-08-28T12:16:51.857 回答
8

它们是 PHPdoc 注释,通常用于 IDE 类型提示/代码完成(有时也用于文档生成,但在这种情况下不适用)。它们与应用程序本身无关,可以毫无意外地删除。

于 2012-08-28T12:15:58.337 回答
5

它位于内联类型提示中。

例如

/* @var bool */
$switch

在这种情况下,它意味着$this是类型CategoriesController并且$data是类型Categories

通常由 IDE 用于类型提示。

于 2012-08-28T12:16:50.147 回答
2

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

于 2012-08-28T12:15:50.833 回答
1

也就是说phpdoc,要制作自动化文档:

文档

于 2012-08-28T12:15:48.910 回答
-1

这是需要为数组指定的方式:

/**
 * @var MyDto[]
 */
于 2019-11-27T14:30:51.530 回答