codeigniter - PHP 參數不定,如何動態調用方法?

來源:互聯網
上載者:User
如:
我現在有三個方法

foo($a,$b=null)boo($a=array(),$b="")Roo($a)

現在我只需要傳遞方法名稱和參數列表就能直接調用方法。

希望是可以這樣(虛擬碼):

function run_function($fun_name,$paras){    {$fun_name}(....//這裡應該怎麼寫呢?);}

自己找到正確答案了,謝謝下面兩個回複的,但真不是我需要的答案。現貼出解決方案:

$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);    }}

回複內容:

如:
我現在有三個方法

foo($a,$b=null)boo($a=array(),$b="")Roo($a)

現在我只需要傳遞方法名稱和參數列表就能直接調用方法。

希望是可以這樣(虛擬碼):

function run_function($fun_name,$paras){    {$fun_name}(....//這裡應該怎麼寫呢?);}

自己找到正確答案了,謝謝下面兩個回複的,但真不是我需要的答案。現貼出解決方案:

$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);    }}

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

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);

被忽略的回答可以實現阿 真是醉了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.