Как получить автокомплит для расширенной реализации на основе интерфейса/абстрактного класса/класса? Есть библиотека , она работает с объектом . Зависимость внедрена через инъекцию, чтобы клиенты могли писать свои реализации . Проблема в том, что автокомплит идет для указанного типа, и даже если мы написали свою реализацию с расширенным апи то мы обламываемся на автокомплит. Как это вообще решается ?
UPD. Мы можем как угодно менять реализацию TaxiService, но когда мы выкладываем ее в opensource, то клиенты разумеется не должны менять исходники, чтобы получить свои плюшки (автокомплит для своих реализаций).interface Machine
{

public function go();

}
class Car implements Machine
{

public function go()
{
// TODO: Implement go() method.
}

}
class ElectroCar extends Car
{

public function charge()
{
}

}
class TaxiService
{

protected $machine;
function __construct(Machine $machine)
{
$this->machine = $machine;
}
public function getMachine()
{
return $this->machine;
}
}
$taxi = new TaxiService(new ElectroCar());
$taxi->getMachine()->// как получить charge ?

21 Авг 2019 в 07:06
176 +1
0
Ответы
1

Для того чтобы использовать автокомплит для расширенной реализации на основе интерфейса/абстрактного класса/класса, можно воспользоваться механизмом DocBlocks в PHPDoc.

Например, в вашем случае, чтобы получить автокомплит для метода charge() в классе ElectroCar, можно добавить PHPDoc комментарий к методу getMachine() в классе TaxiService:

/**
* @return ElectroCar
*/
public function getMachine()
{
return $this->machine;
}

Теперь, при использовании метода getMachine() в клиентском коде, автокомплит будет предлагать методы, доступные в классе ElectroCar, включая метод charge().

Надеюсь, это поможет вам решить проблему с автокомплитом для расширенной реализации в вашем проекте.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир