Как сообщить инспектору PhpStorm о выходе()?

у меня следующий случай

switch ($var) {
    case 'a':
        $model = 'x';
        break;
    case 'b':
        $model = 'y';
        break;
    // others cases ...
    default:
        // does actions and calls exit(), 
        // so i don't have to put return/break after call
        // because it is unreachable, but phpstorm don't know it
        myfunc(); 
}

// here inspector says me "variable $model might not be defined"
// but always have $model here
anotherfunc($model);

person Miraage    schedule 15.04.2014    source источник
comment
Какую версию PHPStorm вы используете? Я не понимаю этого на моей версии 7.   -  person Shankar Narayana Damodaran    schedule 15.04.2014
comment
@ShankarDamodaran, myfunc() вызывает Yii::app()-›end(), который условно вызывает exit(). Не отслеживается Phpstorm :)   -  person Miraage    schedule 15.04.2014


Ответы (1)


Лучшим способом было бы определить $module прямо перед переключением или использовать следующий комментарий:

/** @var string $model */

Этот комментарий сообщит php-storm, что $model задана и это строка. Вы также можете использовать mixed вместо string, что говорит о том, что это может быть что угодно, кроме своего набора.

Я бы рекомендовал использовать комментарий, так как он не влияет на производительность скрипта. Также использование is_set решит проблему, но использует производительность скрипта.

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

person Catmzero    schedule 15.04.2014