Как документировать свойства статического класса в PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как документировать свойства статического класса в PHP

Сообщение Anonymous »

В следующем сценарии, когда у вас есть статическое свойство 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 представляет BaseYii, а Bar представляет собой пользовательский класс, который его расширяет; FooApp представляет yii\base\Application, а BarApp представляет собой собственный класс, который его расширяет.)

Подробнее здесь: https://stackoverflow.com/questions/301 ... ies-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»