Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Исправляем ошибки phpstan после обновления Yii2 до 2.0.53

Лучшие практики работы с dropDownList в Yii framework 2

Начиная с версии 2.0.53 в Yii framework добавили дженерики в описание некоторых классов. Это приводит к ошибкам phpstan вида: Method app\controllers\TestController::beforeAction() has parameter $action with generic class yii\base\Action but does not specify its types: T

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

Пример для реляций AR при phpstan ошибке Method app\models\Post::getAuthor() return type with generic class yii\db\ActiveQuery does not specify its types: T:

/**  
* @return \yii\db\ActiveQuery  
*/  
public function getAuthor(): \yii\db\ActiveQuery  
{  
    return $this->hasOne(Author::class, ['id' => 'author_id']);  
}

Следующая частая причина связана с переопредлением метода beforeAction:

/**  
* @param \yii\base\Action $action  
*/  
public function beforeAction($action): bool  
{  
    if ($action->id == 'callback') {  
        $this->enableCsrfValidation = false;  
    }  

    return parent::beforeAction($action);  
}

И заключительная ошибка возникает при реализации своих экшенов Class app\actions\UpdateImageAction extends generic class yii\base\Action but does not specify its types: T:

/**  
* @extends Action  
*/  
class UpdateImageAction extends \yii\base\Action
{
}

Остальные проблемы, связанные с does not specify its types: T, решаются аналогичным образом.

  • 2025-12-02 19:48:42