Тип динамического возврата подсказки PHP (на основе параметра $ class)

Возможно ли, что вы намекаете на возвращаемый тип функции/метода PHP, определяемый одним из аргументов? Что-то вроде этого:

/**
 * @param string $class
 * @param array $attributes
 * @return $class <- this doesn't work
 */
public function create($class, $attributes) {
    ... // finally returns object of type $class
}

Я реализую библиотеку, которая позволяет создавать фабричные объекты для модульных тестов. Поэтому я хочу сделать возможным в клиентском коде:

$user = $factory->create('Users', ['name' => 'John', 'email' => '[email protected]']);

И иметь автозаполнение методов/атрибутов объекта без необходимости добавлять явные комментарии PHPDoc в клиентский код, например:

/* @var $user Users */
$user = $factory->create('Users', ['name' => 'John', 'email' => '[email protected]']);

Любые предложения приветствуются! Пока я работаю в популярных IDE (PHPStorm, Eclipse, NetBeans), это правильное решение.


person ddinchev    schedule 07.01.2015    source источник
comment
Нет, и я не вижу причин для этого. PHPDoc/typehints предназначены для добавления строгих ограничений в код. То есть метод или функция должны иметь ровно один возвращаемый тип (максимум тот возвращаемый тип или ноль), потому что это независимый кусок кода и он ничего не знает о контексте, в котором он будет использоваться.   -  person Alma Do    schedule 07.01.2015
comment
Я хочу намекнуть IDE о типе возвращаемого значения, чтобы я мог использовать автодополнение, а не добавлять его проверку.   -  person ddinchev    schedule 07.01.2015
comment
Да, ты можешь это сделать. Ответ на вопрос здесь stackoverflow.com/a/17671992/540001   -  person beardedlinuxgeek    schedule 17.05.2016


Ответы (1)


Попробуйте DynamicReturnTypePlugin. то вы можете добавить эту конфигурацию вручную

person Yosef Tukachinsky    schedule 19.10.2018