我有2个或更多函数,它们始终采用相同的参数。该参数是另一个函数调用的返回值。
这是代码:
$result = getMyResult();
myFunction1($result);
myFunction2($result);
...
问题
是否可以使用相同的参数在同一行上调用多个函数?
我要实现的目标的示例:
myFunction1,myFunction2...(getMyResult());
需求
getMyResult()
值临时存储在变量中。getMyResult()
。*这样。
function myHelperFunction($result) {
myFunction1($result);
myFunction2($result);
...
}
如果myHelperFunction()
是最接近的解决方案,那么我很高兴听到它。
答案 0 :(得分:0)
我进行了更多研究,得出的最符合我要求的答案是:1:面向对象方法和熟练的二传手或2:具有辅助功能。
(在此处找到解决方案1:Call multiple methods on object?)
解决方案1 (3/4要求)用方法创建类,并让每个方法返回对象本身。
$result = getMyResult();
$myclass->myMethod1($result)->myMethod2($result)->...
唯一的“问题”是我必须将参数存储在temp变量中,因为我不想多次调用getMyResult()
。
解决方案2 (3/4要求) Helper函数过程解决方案。
function myHelperFunction($result) {
myFunction1($result);
myFunction2($result);
...
}
myHelperFunction(getMyResult());
唯一的“问题”是我必须定义一个调用所有其他函数的函数。该函数不是动态的,因为如果不实现进一步的逻辑,我将无法控制内部调用的函数的数量。
结论
我找不到满足我所有要求的解决方案,并且目前无法确定是否还有其他解决方案。 解决方案1 和 2 都可以简化我的代码设计。现在,我将使用解决方案1 。
答案 1 :(得分:0)
有趣的是,这仍然没有真正令人满意的答案。这是一个函数,它将调用任意数量的带有一些参数的函数。
它不是单行代码,但是一旦你写了它,你就再也不需要了(每次都不需要一个辅助函数)。在 PHP 7.4 之前,它看起来像这样:
function for_effect() {
$args = func_get_args();
return function() use($args) {
$inner_args = func_get_args();
array_walk($args, function($fn) use ($inner_args){call_user_func_array($fn, $inner_args);});
};
}
$print_me = function() {
var_dump( func_get_args());
};
for_effect($print_me, $print_me)('Some argument');
发布 7.4,更好一些:
function for_effect() {
$args = func_get_args();
return function() use($args) {
$inner_args = func_get_args();
array_walk($args, fn($fn)=>call_user_func_array($fn, $inner_args));
};
}