沙雕指数五颗星 2022-12-21 07:14 采纳率: 28.6%
浏览 31
已结题

PHP如何将func_get_args值作为参数列表传递给另一个函数?

我想创建一个函数(my_function()),该函数获取无限数量的参数并将其传递给另一个函数(call_another_function())


function my_function() {    
   another_function($arg1, $arg2, $arg3 ... $argN);    
}

因此,要致电my_function(1,2,3,4,5)并开始致电another_function(1,2,3,4,5)

我知道我应该使用func_get_args()将所有函数参数作为数组获取,但是我不知道如何将此参数传递给另一个函数.

  • 写回答

3条回答 默认 最新

  • |__WhoAmI__| 2022-12-21 07:24
    关注

    可以使用 call_user_func_array() 函数来传递参数数组给另一个函数。

    function my_function() {
        $args = func_get_args();
        call_user_func_array('another_function', $args);
    }
    

    这样,如果调用 my_function(1, 2, 3, 4, 5),它会传递参数数组 [1, 2, 3, 4, 5] 给 another_function 函数。

    注意:call_user_func_array 函数需要两个参数,第一个参数是要调用的函数的名称(字符串),第二个参数是要传递的参数数组。

    还可以使用 forward_static_call_array 或 forward_static_call 函数来实现类似的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    沙雕指数五颗星 2022-12-21 07:40

    如果这个方法换成class 传递给__construct呢?

    function t($args){
        $arguments = func_get_args();
        $className = array_shift($arguments);
        $className = '\\tools\\'.$className;
        
        return new call_user_func_array($className,$arguments);//这样不行
    }
    
    

    主要我是想做一个工具实例化函数

    回复
    |__WhoAmI__| 回复 沙雕指数五颗星 2022-12-21 08:00

    function t() {
       $arguments = func_get_args();
       $className = array_shift($arguments);
       $className = '\\tools\\'.$className;
    
       $callback = function() use ($className, $arguments) {
           return new $className(...$arguments);
       };
    
       return call_user_func_array($callback, $arguments);
    }
    

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月21日
  • 创建了问题 12月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部