【发布时间】:2012-01-15 23:23:57
【问题描述】:
我试图避免这种情况:
function do_something($arg1, $arg2, $arg3, $arg4, $arg5) {
function do_something_else($arg1, $arg2, $arg3, $arg4, $arg5) {
// code
}
do_something_else($arg1, $arg2, $arg3, $arg4, $arg5);
// do other things with the args
}
也就是说,一遍又一遍地重复 args,尤其是在有很多 args 的情况下。在此示例中,我需要在主 do_something 函数内有一个名为 do_something_else 的嵌套函数。嵌套函数还使用传递给它的父级的所有相同参数。所以我必须将它们传递给它,并在实际执行 do_something 函数时再次重复所有这些参数。
有没有更简洁的方法来处理这个问题?我知道内置的 php 函数 func_get_args() 返回一个函数内所有参数的数组,但是如何将它们传递给子函数以便它们也可以在那里使用,基本上是在寻找一种方法来做到这一点而无需重复 args这么多次?
【问题讨论】:
-
考虑将所有参数放入一个类/数组中。
-
据我所知,PHP 不支持嵌套函数。如果您两次调用
do_something,它将中断。 -
我正在取回社区网站的成员列表。用户可以根据各种条件进行搜索,do_something_else 函数实际上是一个 build_query 函数,它根据用户指定的内容构建 select sql 语句。如果用户省略了一些可选字段,我不需要将它们添加到查询的子句中,以便将它们传递到主函数中,然后我检查它们是否为空。如果没有,那么我构建查询以包含它们。无论如何,它在它自己的功能内的原因是因为......
-
我需要执行两次查询,以获得分页的总记录数。因此,我没有将所有代码重复两次,而是将其放在一个函数中,这样我就可以执行两次。
标签: php