Как использовать $ this справочник внутри PHP докблоков - PullRequest
1 голос
/ 28 февраля 2020

У меня есть проект, который использовал MVC, где файл представления наследует $this, который ссылается на класс представления, присоединенный к контроллеру.

Вспомогательные классы были присоединены в некоторых представлениях и являются используется следующим образом:

<?=$this->someHelper->renderSomething()?>

Я надеялся помочь разработчикам и IDE, выполнив это:

/** @var SomeHelper $this->someHelper */

По-видимому, это не поддерживается. Есть ли способ достичь этого?

В настоящий момент я могу найти только обходной путь, чтобы объявить помощника новой переменной и включить для этого оператор @var.

1 Ответ

3 голосов
/ 28 февраля 2020

Это невозможно, вы должны ввести подсказку $this. Если $this не является конкретным классом, вы можете напечатать подсказку, вместо этого создайте поддельный класс / интерфейс, который будет действовать в качестве помощника для IDE:

// somewhere outside of your code base, but accessible by the IDE
// use the name of your choice
interface CodeIgniterMvc
{
    /**
     * @return string
     */
    function renderSomething(): string;

    /**
     * @param array $filter Filtering conditions
     * @return \Your\App\Models\User[]
     */
    function getUsers(array $filter): array;
}

и в представлениях:

/** @var $this CodeIgniterMvc **/

Конечно, включите в репозиторий, чтобы каждый член команды мог получить такие преимущества.

...