【问题标题】:Best practice: returning multiple values最佳实践:返回多个值
【发布时间】:2015-09-01 12:43:54
【问题描述】:

从纯编码最佳实践的角度来看,建议采用什么作为大中型开发团队的标准?

返回一个顺序数组:

function get_results($filter) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    return array($results, $total);
}

返回一个关联数组:

function get_results($filter) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    return array(
        'resuts' => $results, 
        'total' => $total
    );
}

返回单个结果并通过引用分配第二个结果 (?!):

function get_results($filter, &$count = null) {
    $query = "SELECT SQL_CALC_FOUND_ROWS, * FROM ...";

    $results = ...
    $total = ...

    $count = $total;
    return $results;
}

欢迎提出任何其他方法。

【问题讨论】:

  • 不确定,但是如果您查看 PHP preg_match*,它们会返回一个计数并填充引用的匹配数组。
  • 我永远不会在我的团队中确定这样的约定。这太可怕了。您还必须确定数以百万计的其他事情。顺便说一句,您可以向团队询问他们喜欢什么。
  • 就我个人而言,我喜欢关联数组,它们很容易转换为对象和对象。
  • 代码审查网站上的这个问题不是更合适吗?
  • @RobTillie:几乎没有。它看起来大多是假设性的,背后没有任何背景。这也更像是一个“投票”问题,这不是 CR 的意义所在。

标签: php function methods coding-style code-standards


【解决方案1】:

来自 PHP 文档:

一个函数不能返回多个值,但是返回一个数组可以得到类似的结果。

鉴于文档所述,所有这些似乎都是很好的做法。 comment in the documentation 揭示了另一种方式:使用 list()。请看下面的例子:

function fn($a, $b)
{
   # complex stuff

    return array(
      $a * $b,
      $a + $b,
   );
}

list($product, $sum) = fn(3, 4);

echo $product; # prints 12
echo $sum; # prints 7

【讨论】:

    猜你喜欢
    • 2018-11-01
    • 2013-05-12
    • 1970-01-01
    • 2012-02-03
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2017-07-23
    相关资源
    最近更新 更多