php - 如何在 PHP 中记录静态类属性

标签 php yii phpstorm phpdoc

给定以下场景,您在 Foo 上有一个静态属性,记录为 FooApp 的一个实例,一个扩展类 Bar,以及在运行时,事实证明静态属性实际上设置为 BarApp 而不是 FooApp 的实例:

class Foo
{
    /** 
     * @var FooApp
     */
    public static $app;
}

class Bar extends Foo
{
}

Bar::$app = BarApp();

…记录 Bar 的正确方法是什么,以便清楚地知道它的静态 $app 将被设置为 BarApp实例而不是 FooApp

我已经尝试了以下但 PhpStorm 不尊重它,可能是因为 @property 不适用于静态属性:

/**
 * @property BarApp $app
 */
class Bar extends Foo
{
}

到目前为止,我唯一想到的就是在代码中覆盖 $bar:

class Bar
{
    /** 
     * @var BarApp
     */
    public static $app;
}

这有点烦人,因为它会导致额外的代码,而理论上额外的文档就足够了(例如使用 @property 覆盖实例级属性和方法文档的情况) @method).

(这里的用例是一个 Yii 应用程序 - Foo 代表 BaseYiiBar 代表一个扩展它的自定义类; FooApp 代表 yii\base\ApplicationBarApp 代表一个扩展它的自定义类。)

最佳答案

请注意:这是一个跟踪答案,可以帮助人们从搜索结果到达这里。

在撰写本文时,根本没有(官方)文档标记来注释“魔法” 静态属性,PHPDocumentor standard 中也没有。也不是 proposed PSR19 .

如果你是 PH​​P-FIG 的一员(看着你@Chuck Burgess),你可能想考虑将它添加到 PSR19,最好是作为 @property 标签的扩展——对于像这样的例子:

 * @property static type $name Free text description

“static” 是可选关键字,对于非静态、虚拟属性可以省略。

否则,我打开了an issue在 PHPStorm 问题跟踪器上。如果您希望在 PHPStorm 中实现这一点,请考虑为其投票。

关于php - 如何在 PHP 中记录静态类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134643/

相关文章:

php - 如何在 Yii bootstrap 中将客户端验证放在 TbActiveForm 中?

PHP MYSQL ajax Yii框架登录错误

ide - 多个数据库编辑器选项卡 phpStorm

phpstorm - 搜索类 PhpStorm 中的方法

php - 选择变体时,Woocommerce 自定义可用性文本会多次显示

php - 为什么我的 JS 代码在明显的循环中运行?

PHP mySQL 搜索不工作

php - 获取行数和回显

yii - YII 中的关系问题

php - PhpStorm 中移动到 HTML 结束标记的快捷键