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

cnh2zyt3  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(102)

假设您在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重写示例级属性和方法的文档)。
(The这里的用例是一个Yii应用程序-Foo代表BaseYiiBar代表一个扩展它的自定义类; FooApp表示yii\base\Application,而BarApp表示扩充它的自订类别。)

b0zn9rqh

b0zn9rqh1#

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

在撰写本文时,PHPDocumentor standardproposed PSR19中都没有(官方)文档标记来注解 “magic” 静态属性。
如果你是PHP-FIG的一员(看着你@Chuck Burgess),你可能会考虑把它添加到PSR 19中,最好是作为@property标签的扩展-例如:


* @property static type $name Free text description
  • “static”* 是可选关键字,对于非静态虚拟属性,可以省略该关键字。

否则,我已经在PHPSorm问题跟踪器上打开了an issue。如果你想在PHPSorm中实现它,考虑投票支持它。

相关问题