/** * @param array|callable $array_getter * @param callable $iterators_getter WARNING: it's just a callable to chain on * @return callable */ function array_chain_dg($array_getter, $iterators_getter) { $args = func_get_args(); $array_getter = callablize(array_shift($args)); $iterators_getters = $args; return function () use($array_getter, $iterators_getters) { $args = func_get_args(); $array = call_user_func_array($array_getter, $args); $ret = call_user_func_array('array_chain', array_merge(array($array), $iterators_getters)); return $ret; }; }
/** * @param mixed $value * @return callable */ function callablize_dg($value) { return function () use($value) { return callablize($value); }; }
/** * @param string|callable $directory_getter * @return callable */ function chdir_dg($directory_getter) { $directory_getter = callablize($directory_getter); return function () use($directory_getter) { $args = func_get_args(); $directory = call_user_func_array($directory_getter, $args); debug_enforce(chdir($directory), "Could not change working directory to '{$directory}'"); }; }