使用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()或类似的方式显式声明变量吗?

提前致谢

Kyslik

您可以使用文档注释注释从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


不使用PHPMD的PHPStorm用户可以使用

/** @noinspection RULE */

哪里可以找到规则

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

显式变量声明

使用New-Variable函数创建变量时如何显式声明变量的类型?

Groovy和IntelliJ:如何使用显式类型声明提取变量?

使用Clang编译CRTP Singleton时,如何解决所谓的“显式实例化声明”的缺失?

使用“持久卷声明”时是否必须显式创建“持久卷”?

如何显式声明某些Phaser类型的变量?

PostgreSQL用显式数据类型声明变量

在razor视图引擎中使用var关键字作为变量,而不是使用显式数据类型进行声明

未使用的变量警告,即使在IF语句中显式使用它时也是如此

使用显式游标时,错误

显式Polyfit与变量

解决隐式时,Scala如何使用显式类型?

在隐式工作时,在Go var声明中显式提供类型失败

显式实例化源文件中的定义时,标头中是否需要显式模板实例化声明?

当我使用另一个文件中的变量时,全局符号需要显式包名

何时通过“使用”声明进行解析以及何时显式声明名称空间

是否可以在PHP中显式声明局部变量的类型?

在Scala中是否需要后续函数调用的显式变量声明?

没有显式特化声明的显式模板特化

对常量求和时的隐式缩小与对变量求和时的显式缩小

使用显式变量是否更有效?

为什么 Moq 有时需要在 Returns 中进行显式类型声明?

为什么在执行显式转换时转换构造函数需要声明复制构造函数?

当lambda捕获“ this”时,是否必须显式使用它?

在Selenium中使用页面工厂时如何显式等待?

BOM与XML中的显式编码声明

C ++声明中的显式限定

显式声明内联函数签名

类模板显式实例化声明