哪个 PHP 变量类型声明的文档注释是正确的?
Which PHP documentation comment for variable type declaration is correct?
我搜索了不同的指南和文档,了解如何在文档中正确声明变量类型,但似乎有几种不同的选择。
3 种不同的可能性是:
/** @var integer $sum */
/** @var $sum integer */
/* any of the above but with 1 asterisk */
对于方法参数和变量,在很多不同的文档中都写得很清楚。但是,如果我们谈论的是不在函数或视图文件(MVC 设计模式)中的变量呢?
在我的工作场所,我们目前使用 2 种不同的软件(NetBeans 和 PhpStorm)。我们注意到它们提供了不同的模板来在文档中声明变量类型。
在 PhpStorm 中:
在 NetBeans 中:
在 Whosebug 中,我还发现了 2 种不同的用途 (highly upvoted answer uses NetBeans option with 1 asterisk but in another question it says it's reversed and also uses 2 asterisks)。
由于我们用的是Yii2框架,所以也看看他们是怎么写doc注释的。他们正在使用 this format:
/* @var $this yii\web\View */
我最后感兴趣的(不如上面的问题那么重要)是我是否需要在评论中声明完整路径或在评论中声明对象时的用法?完整路径如下:
/** @var yii\BaseYii $object */
echo $object::createObject(1);
完整路径看起来像这样:
use yii\BaseYii;
/** @var BaseYii $object */
echo $object::createObject(1);
我们希望尽可能准确地遵循 PHP 标准。
感谢任何帮助。
我知道这个问题可能太宽泛或不清楚你在问什么,我也会密切关注看看进展如何。
我通常看到的是 PSR-5 建议的:
/** @var int $sum This is a sum. */
$sum = 0;
关于是否声明完整路径,这些都是有效的例子:
namespace \A\B\C;
use yii\BaseYii;
/** @var BaseYii $yii */
$yii = $factory->getApplication();
namespace \A\B\C;
/** @var \yii\BaseYii $yii */
$yii = $factory->getApplication();
namespace \A\B\C;
/** @var \ArrayObject|null $array */
$array = null;
/**
* @return \DateTime
*/
function now()
{
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="foo")
*/
class Foo
我搜索了不同的指南和文档,了解如何在文档中正确声明变量类型,但似乎有几种不同的选择。
3 种不同的可能性是:
/** @var integer $sum */
/** @var $sum integer */
/* any of the above but with 1 asterisk */
对于方法参数和变量,在很多不同的文档中都写得很清楚。但是,如果我们谈论的是不在函数或视图文件(MVC 设计模式)中的变量呢?
在我的工作场所,我们目前使用 2 种不同的软件(NetBeans 和 PhpStorm)。我们注意到它们提供了不同的模板来在文档中声明变量类型。
在 PhpStorm 中:
在 NetBeans 中:
在 Whosebug 中,我还发现了 2 种不同的用途 (highly upvoted answer uses NetBeans option with 1 asterisk but in another question it says it's reversed and also uses 2 asterisks)。
由于我们用的是Yii2框架,所以也看看他们是怎么写doc注释的。他们正在使用 this format:
/* @var $this yii\web\View */
我最后感兴趣的(不如上面的问题那么重要)是我是否需要在评论中声明完整路径或在评论中声明对象时的用法?完整路径如下:
/** @var yii\BaseYii $object */
echo $object::createObject(1);
完整路径看起来像这样:
use yii\BaseYii;
/** @var BaseYii $object */
echo $object::createObject(1);
我们希望尽可能准确地遵循 PHP 标准。
感谢任何帮助。
我知道这个问题可能太宽泛或不清楚你在问什么,我也会密切关注看看进展如何。
我通常看到的是 PSR-5 建议的:
/** @var int $sum This is a sum. */
$sum = 0;
关于是否声明完整路径,这些都是有效的例子:
namespace \A\B\C;
use yii\BaseYii;
/** @var BaseYii $yii */
$yii = $factory->getApplication();
namespace \A\B\C;
/** @var \yii\BaseYii $yii */
$yii = $factory->getApplication();
namespace \A\B\C;
/** @var \ArrayObject|null $array */
$array = null;
/**
* @return \DateTime
*/
function now()
{
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="foo")
*/
class Foo