如何在 PHP 中记录静态 class 属性
How to document static class properties in PHP
鉴于以下情况,您在 Foo
上有一个静态 属性 记录为 FooApp
的一个实例,一个扩展的 class 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
代表 BaseYii
并且 Bar
代表扩展它的自定义 class;FooApp
代表yii\base\Application
和 BarApp
表示扩展它的自定义 class。)
请注意:这是一个跟踪答案,可以帮助人们从搜索结果到达这里。
在撰写本文时,根本没有(官方)文档标记来注释 "magic" 静态属性,PHPDocumentor standard nor the proposed PSR19 中也没有。
如果你是 PHP-FIG 的一员(看着你@Chuck Burgess),你可能想考虑将它添加到 PSR19,最好是作为 @property
标签的扩展— 例如像这样:
* @property static type $name Free text description
"static" 是可选关键字,对于非静态虚拟属性可以省略。
否则,我已经在 PHPStorm 问题跟踪器上打开了 an issue。如果您希望在 PHPStorm 中实现此功能,请考虑为其投票。
鉴于以下情况,您在 Foo
上有一个静态 属性 记录为 FooApp
的一个实例,一个扩展的 class 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
代表 BaseYii
并且 Bar
代表扩展它的自定义 class;FooApp
代表yii\base\Application
和 BarApp
表示扩展它的自定义 class。)
请注意:这是一个跟踪答案,可以帮助人们从搜索结果到达这里。
在撰写本文时,根本没有(官方)文档标记来注释 "magic" 静态属性,PHPDocumentor standard nor the proposed PSR19 中也没有。
如果你是 PHP-FIG 的一员(看着你@Chuck Burgess),你可能想考虑将它添加到 PSR19,最好是作为 @property
标签的扩展— 例如像这样:
* @property static type $name Free text description
"static" 是可选关键字,对于非静态虚拟属性可以省略。
否则,我已经在 PHPStorm 问题跟踪器上打开了 an issue。如果您希望在 PHPStorm 中实现此功能,请考虑为其投票。