kimono
@kimono
Web developer

Как задокументировать parent в IDE на примере YII2?

Есть трейт:
<?php

    namespace X\Y\Z;

    use yii\db\ActiveRecord;

    /**
     * Class SaveRelationTrait
     * @package X\Y\Z;
     */
    trait SaveRelationTrait
    {
        /**
         * @param      $data
         * @param null $formName
         * @return bool
         */
        public function load($data, $formName = null)
        {
            /* @var $this ActiveRecord|SaveRelationBehavior */
            // v==== вот в этом месте IDE не понимает, кто такой parent, хотя мы как бы указали, что $this - это актив рекорд. ЧЯДНТ?
            if (parent::load($data, $formName)) {
                $this->loadRelations($data, $this->formName());

                return true;
            }

            return false;
        }
    }


b0de14c84ecd4f2ea30f66dbf5b78337.png
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@Quieteroks
php программист
Мне кажется никак.

Трейт должен реализовывать общие функции. И может быть внедрен в любой класс. С чего вы взяли, что у класса, который внедрит трейт, будет наследован от нужного Вам класса и иметь соответствующую функцию?

Единственный совет - использовать тот же $this.
Или использовать не трейт, а промежуточную модель, поскольку Вы явно подразумеваете использование данной функции только в модели и только в ActiveRecord
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я бы сделал это через behavior а не через trait, что решит много проблем, но будет незначительнее медленнее работать.
Советую почитать вот эту статейку:
Поведение или трейт
Ответ написан
Комментировать
mitaichik
@mitaichik
Попробуйте аннотацию mixin
https://youtrack.jetbrains.com/issue/WI-1730
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы