Как сказать phpDoc, что строка является именем класса?

Я часто даю объектам статические методы и свойства, которые не требуют инициализации объекта. Например:

class SomeObject {
public function __construct($object_id) {
$this->loadProperties($object_id);
}

public static function getSomeStaticString() {
return "some static string";
}
}

Теперь мы создаем подклассы этих объектов и имеем некоторый контроллер, который возвращает строку класса объекта при определенных обстоятельствах, когда объект еще не должен быть инициализирован. Например:

class SomeObjectController {
public function getSomeObjectWithTheseProperties(array $properties) {
if($properties[0] === "somevalue") {
if($properties[1] === "someothervalue") {
return SomeSubclassObject::class;
}

return SomeObject::class;
}

return NULL;
}
}

Иногда я мог бы хотеть вызвать статическую функцию SomeObject::getSomeStaticString() без фактической инициализации объекта (потому что это потребовало бы ненужной выборки из базы данных). Например:

$controller = new SomeObjectController;
$properties = array("somevalue", "someothervalue");
$object_class = $controller->getSomeObjectWithTheseProperties($properties);

echo $object_class::getSomeStaticString();

Вопрос: могу ли я как-то сказать PhpStorm, желательно через phpDoc, что $object_class является строкой класса подкласса SomeObject?

Если я скажу своей IDE, что это строка, она сообщит мне getSomeStaticString() неверный метод С другой стороны, если я сообщаю своей IDE, что это экземпляр SomeObject, он думает, что я могу получить доступ к обычным нестатическим методам и свойствам, чего я не могу.

4

Решение

/** @var SomeObject $object_class */
$object_class = $controller->getSomeObjectWithTheseProperties($properties);

введите описание изображения здесь

Извините, нет другого способа сказать, что это случай SomeObject,

… если я скажу своей IDE, что это экземпляр SomeObject, он подумает, что я могу получить доступ к обычным нестатическим методам и свойствам, чего я не могу.

Так? Только не получайте доступ к нестатическим методам и свойствам.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]