如何在不重复函数调用或污染全局范围的情况下从函数返回值


How to return value from function without repeated function call or polluting global scope?

我有两个函数,它们附加到钩子上,并在程序生命周期中的定义点或事件上执行。当我们想将一些返回值从一个函数调用传递到另一个函数,但不需要重复的函数调用或污染全局范围时,从函数和设计来看,什么是最好的方法。

这是,我希望有充分的文件记录的部分代码:

/**
 * @array hookparams Hookparams array from both of function calls
 */
$hookparams = []; // initalized empty values
function hook_FunctionOne()
{
    //do something, than save result in hookparams array
    $hookparams['key'] = "Foo"; // return? But I can't call FunctionOne once more, and assign return value to temp variable
}
function hook_FunctionTwo(array $hookparams)
{
    //do something with returned hookparams array form function, than save result in hookparams array again 
    $hookparams['key'] .= "Bar"; // Result is "FooBar";
}
// Both functions are called here
run_hook("HookPoint1", "hook_FunctionOne");
run_hook("HookPoint2", "hook_FunctionTwo");

通过引用将参数传递给函数节省了我的一天。这是完整的代码:

/**
 * @array hookparams Hookparams array from both of function calls
 */
$hookparams = []; // initalized empty values
function hook_FunctionOne(&$hookparams)
{
    //do something, than save result in hookparams array
    return $hookparams['key'] = "Foo"; // return? But I can't call FunctionOne once more, and assign return value to temp variable
}
function hook_FunctionTwo(&$hookparams)
{
    //do something with returned hookparams array form function, than save result in hookparams array again 
    return $hookparams['key'] .= "Bar"; // Result is "FooBar";
}
// Both functions are called here
echo hook_FunctionOne($hookparams); // First function call
echo hook_FunctionTwo($hookparams); // Second function call
echo "<pre>";
print_r($hookparams);
echo "</pre>"