首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递/返回值的最佳方法

传递/返回值的最佳方法
EN

Stack Overflow用户
提问于 2009-08-07 21:59:56
回答 4查看 193关注 0票数 0

我问这个问题的原因是因为我已经找到了我的第一份真正的工作(是的,一份带薪的办公室工作--不再做志愿者了!)大约两个月前的Web开发工作。我有几个同事在计算机信息系统(web开发和编程)。但正如你们中的许多人所知道的,你在大学里学到的东西和你在求职网站上需要的东西可能会有很大的不同,甚至更多。我从我的工作中学到了很多--我在MVC架构中从头开始重新创建了我们使用的整个框架--这是我第一次做任何与设计模式相关的事情。

我想知道在OO中传递/返回值的最佳方式是什么?现在我还没有实现任何类型的标准,但我想在框架的大小进一步增加之前创建一个。当一个以上的值需要返回时,我会返回数组,有时会传递数组或有多个参数。数组是最好的方法,还是有更有效的方法,比如json?我喜欢数组的想法,因为要传递更多或更少的值,您只需更改数组,而不是函数定义本身。

谢谢大家,我只是想成为一个更好的开发者。

编辑:很抱歉,我以为我已经接受了这个问题的答案。我的坏,非常,非常坏。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-07 22:09:55

您是否经常遇到实际需要多个返回值的情况?我不能想象这是经常发生的。

我指的不是返回某种类型的可枚举数据集合(即查询结果)的情况,而是返回的数组没有其他意义,即只保存两个或更多个值。

PHP库本身使用的一种技术是引用参数,例如使用preg_match()。函数本身返回一个布尔值,但也可以选择使用提供的第三个参数来存储匹配的数据。本质上,这是一个“第二个返回值”。

绝对不要使用像JSON这样的数据交换格式。这些格式的目的是以一种预期的、可解析的方式在不同的系统之间移动数据。在一次PHP执行中,您不需要这样做。

票数 5
EN

Stack Overflow用户

发布于 2009-08-07 22:05:48

您可以返回任何您想要的东西:单个值、数组或引用(取决于函数的需要)。只要保持一致即可。

但请不要在内部使用JSON。它只会产生不必要的开销。

票数 2
EN

Stack Overflow用户

发布于 2009-08-07 23:07:08

我也使用数组来返回多个值,但在实践中这种情况并不经常发生。如果是这样的话,通常是一组合理的数据,比如从一个名为getCoordinates()的函数返回array('x'=>10,'y'=>10)。如果您发现自己正在进行大量的处理,并在许多函数的数组中返回大量数据,那么可能需要进行一些重构,以便将工作放到更小的单元中。

话虽如此,您提到:

我喜欢数组的想法,因为要传递更多或更少的值,你只需要改变数组,而不是函数定义本身。

在这方面,您可能感兴趣的另一种技术是使用具有可变数量参数的函数。声明一个没有参数的函数是完全可以接受的:

代码语言:javascript
复制
function stuff() {
    //do some stuff
}

但是调用它时,请使用您愿意给它的所有参数:

代码语言:javascript
复制
$x = stuff($var1, $var2, $var3, $var4);

通过使用func_get_args()func_get_arg() (单数)和func_num_args(),您可以轻松地找到/循环传递的所有参数。如果您的脑海中没有特定的参数,例如一个sum()函数,那么这种方法非常有效:

代码语言:javascript
复制
function sum()
{
    $out = 0;
    for($i = 0; $i < $c = func_num_args(); $i++) {
        $out += func_get_arg($i);
    }
    return $out;
}

//echoes 35
echo sum(10,10,15);

发人深省,也许你会发现它很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1247219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档