ホームページ  >  記事  >  バックエンド開発  >  codeigniter - PHP 参数不定,如何动态调用方法?

codeigniter - PHP 参数不定,如何动态调用方法?

WBOY
WBOYオリジナル
2016-06-06 20:24:221245ブラウズ

如:
我现在有三个方法

<code>foo($a,$b=null)

boo($a=array(),$b="")

Roo($a)
</code>

现在我只需要传递方法名称和参数列表就能直接调用方法。

希望是可以这样(伪代码):

<code>function run_function($fun_name,$paras)
{
    {$fun_name}(....//这里应该怎么写呢?);
}
</code>

自己找到正确答案了,谢谢下面两个回复的,但真不是我需要的答案。现贴出解决方案:

<code>$handler = array( 'test', 'test3');
$params = array(
    array(1,2,3,4),
    1
);

if($params == null)
{
    call_user_func($handler);
}
if (is_callable($handler) )
{
    call_user_func_array( $handler , $params );
}


class test
{
    function test1($arr,$arr1)
    {
        var_dump(array_merge($arr,$arr1));
    }

    function test2()
    {
        echo 123;
    }

    function  test3($arr,$a)
    {
        var_dump($arr);
        var_dump($a);
    }
}</code>

回复内容:

如:
我现在有三个方法

<code>foo($a,$b=null)

boo($a=array(),$b="")

Roo($a)
</code>

现在我只需要传递方法名称和参数列表就能直接调用方法。

希望是可以这样(伪代码):

<code>function run_function($fun_name,$paras)
{
    {$fun_name}(....//这里应该怎么写呢?);
}
</code>

自己找到正确答案了,谢谢下面两个回复的,但真不是我需要的答案。现贴出解决方案:

<code>$handler = array( 'test', 'test3');
$params = array(
    array(1,2,3,4),
    1
);

if($params == null)
{
    call_user_func($handler);
}
if (is_callable($handler) )
{
    call_user_func_array( $handler , $params );
}


class test
{
    function test1($arr,$arr1)
    {
        var_dump(array_merge($arr,$arr1));
    }

    function test2()
    {
        echo 123;
    }

    function  test3($arr,$a)
    {
        var_dump($arr);
        var_dump($a);
    }
}</code>

http://www.php.net/manual/zh/function.func-get-args.php

<code>function run_function($fun_name)
{
    if(function_exists($fun_name))
    {
        $num = func_num_args();        
        $args = func_get_args();
        array_shift($args);
        return $num==1 ? call_user_func($fun_name) : call_user_func_array($fun_name,$args);
    }
    trigger_error('Call to undefined function ' . $fun_name, E_USER_ERROR);
}
//使用
run_function('foo', $a, $b);
run_function('boo', $a, $b);
run_function('Roo', $a);</code>

被忽略的回答可以实现阿 真是醉了

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。