Явное объявление переменной при использовании extract()

У меня есть следующий фрагмент:

protected function sendEmail($email)
{
    extract($email);

    $this->transmail->locale($locale)
                    ->timezone($timezone)
                    ->template($template)
                    ->subject($subject)
                    ->send($header, $params);
}

Этот код работает отлично ( полный исходный код здесь). Тем не менее, я хочу убедиться, что следую некоторым хорошим практикам на ходу. Я получаю [некоторые предупреждения CodeClimate] (PHPMD) ( https://codeclimate.com/github/timegridio/timegrid/app/Listeners/SendBookingNotification.php):

  • Избегайте неиспользуемых локальных переменных, таких как "$locale".
  • Избегайте неиспользуемых локальных переменных, таких как "$timezone".
  • Избегайте неиспользуемых локальных переменных, таких как "$template".
  • Избегайте неиспользуемых локальных переменных, таких как "$subject".
  • Избегайте неиспользуемых локальных переменных, таких как "$header".
  • Избегайте неиспользуемых локальных переменных, таких как "$params".

Какие изящные способы это сделать?

Должен ли я явно объявить переменные с list() или что то подобное?

заранее спасибо

1 ответ

Решение

Вы можете использовать аннотации комментариев к документу, чтобы исключить методы или классы из PHPMD или подавить специальные правила для некоторых программных артефактов.

/**
 * This will suppress all the PMD warnings in
 * this class.
 *
 * @SuppressWarnings(PHPMD)
 */
class Bar {
    function  foo() {
        $baz = 23;
    }
}

Или вы можете подавить одно правило с помощью аннотации, например:

/**
 *
 */
class Bar {
    /**
     * This will suppress UnusedLocalVariable
     * warnings in this method
     *
     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
     */
    public function foo() {
        $baz = 42;
    }
}

Источник https://phpmd.org/documentation/suppress-warnings.html


Пользователи PHPStorm, не использующие PHPMD, могут использовать

/** @noinspection RULE */

Где правило можно найти здесь

https://gist.github.com/discordier/ed4b9cba14652e7212f5

Другие вопросы по тегам