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

WBOY
Freigeben: 2016-06-06 20:24:22
Original
1224 Leute haben es durchsucht

如:
我现在有三个方法

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

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

Roo($a)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

<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>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

如:
我现在有三个方法

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

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

Roo($a)
</code>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!