【问题标题】:Can we return a String in a PHP function? [closed]我们可以在 PHP 函数中返回一个字符串吗? [关闭]
【发布时间】:2018-09-18 06:19:15
【问题描述】:

我想从 PHP 函数返回一个字符串。我有两种方法可以做同样的事情,而且这两种方法都有效。我见过很多类似方法二的例子,但没有一个类似方法一的例子。

使用方法 1 有什么注意事项吗?

方法一:

<?php
    function test() {
        if (some condition)
            return 'Some Text';
        }
        else {
            return 'Some Other Text';
        }
    }
    if (test() === 'Some Text') {
        // Do Something
    }
?>

方法二:

<?php
    function test() {

        if (some condition)
            $text = 'Some Text';
        }
        else {
            $text = 'Some Other Text';
        }
        return $text;
    }

    if (test() === 'Some Text') {
        // Do Something
    }
?>

【问题讨论】:

  • 两者都很好。我更喜欢 1,在方法 2 中创建 $text 没有任何意义
  • 第一是早返第二是返一次,个人喜好。
  • 为什么会被否决?这个问题写得很清楚,有很好的例子。
  • @smith 我不认为这是一个关于意见的问题。正如在接受的答案中指出的那样,方法 1 有多个返回语句,如果没有正确执行,可能会导致回归。方法2没有这个问题。
  • @AndrewT。在那个问题中,提问者已经知道没有区别,并问什么是最好的风格。在问题中OP显然不知道。

标签: php function return-value


【解决方案1】:

它们在功能上是等价的。

第二种形式需要一个额外的临时变量。这是一个微优化,对你来说应该不重要,但它确实存在。

方法 1 的问题在于,函数可以退出/返回的位置有多个,如果您没有良好的单元测试覆盖率或没有良好的单元测试覆盖率,则遗漏或修改更有可能导致您可能找不到的回归只是简单的回归测试。

它还允许您返回完全不同的东西,这对于以后必须修改代码的人来说可能很复杂且难以理解。

经常有一些函数具有附加条件(if-then-elseif 等),而这些条件并不那么明确,因此,有时更喜欢形式 2。这通常看起来有点不同,因为它取决于设置默认初始化值:

function test() {
    $text = 'Default value';

    if (some condition)
        $text = 'Some Text';
    } elseif (some other condition) {
        $text = 'Some Other Text';
    }
    return $text;
}

【讨论】:

  • 使用多重回报并导致回归是一个非常有效的观点。我会坚持方法 2。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2020-04-30
相关资源
最近更新 更多