Явное объявление переменной при использовании 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() или что-то подобное?

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

0

Решение

Вы можете использовать аннотации комментариев к документу, чтобы исключить методы или классы из 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

1

Другие решения

Других решений пока нет …