【问题标题】:echo language construct is discouraged. (PHP)不鼓励使用 echo 语言结构。 (PHP)
【发布时间】:2019-05-29 13:47:01
【问题描述】:

为什么 codacy(代码审查工具)显示“不鼓励使用回声语言结构”。

如何解决这个问题。

1:

【问题讨论】:

标签: php codacy github-codereviews


【解决方案1】:

您可以:

echo 替换为print_r

print_r( $StateList->state_name )

改为返回值:

return $StateList->state_name

至于为什么您的 linter 不鼓励使用 echo,这取决于您的编码标准和上下文。

例如,如果您想关注PSR-1 Basic Coding Standardsection 2.3 声明:

一个文件应该声明新的符号(类、函数、常量等)并且不会引起其他副作用,或者它应该执行具有副作用的逻辑,但不应该两者都做。

由于echo 会产生副作用,例如,在声明新类的文件的上下文中不鼓励使用它。在这种情况下,您将改为返回该值。

【讨论】:

    【解决方案2】:

    Codacy 检测代码库中的 linting 问题。 linting 问题可能是安全漏洞、代码风格问题等。

    在您的情况下,使用 php "echo" 是不好的做法。就像您不应该在其他语言中使用 println 一样。如果你需要打印一些东西,你应该使用记录器

    【讨论】:

      【解决方案3】:

      如果你在视图中使用了for/foreach,很容易解决:

      <?php for($i=1; $i<=$nbPage; $i++){
            if($i==$page){ ?>
                  <span> <?= filter_var($i, FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?> </span>
             <?php } else{ ?>
                  <a href="index.php?access=blog&p=<?= filter_var($i, FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?>"><?= filter_var($i, FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?></a>
            <?php }
       } ?>
      

      如果你在控制器中,我建议使用对象设置或返回 $value。

      希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-30
        相关资源
        最近更新 更多