PHP中call user func()函數如何調自用定義函數

來源:互聯網
上載者:User
本篇文章主要介紹PHP中call user func()函數如何調自用定義函數,感興趣的朋友參考下,希望對大家有所協助。

call_user_func函數類似於一種特別的調用函數的方法,使用方法如下:

<?phpfunction nowamagic($a,$b) {  echo $a;  echo $b; } call_user_func('nowamagic', "",""); call_user_func('nowamagic', "",""); //顯示  ?>

調用類內部的方法比較奇怪,居然用的是array,不知道開發人員是如何考慮的,當然省去了new,也挺有新意的:

<?phpclass a {  function b($c)  {   echo $c;  } } call_user_func(array("a", "b"),""); //顯示 ?>

call_user_func_array函數和call_user_func很相似,只不過是換了一種方式傳遞了參數,讓參數的結構更清晰:

<?phpfunction a($b, $c) {  echo $b;  echo $c; } call_user_func_array('a', array("", "")); //顯示 ?>

call_user_func_array函數也可以調用類內部的方法的:

<?phpClass ClassA { function bc($b, $c) {   $bc = $b + $c; echo $bc; } } call_user_func_array(array('ClassA','bc'), array("", "")); //顯示 ?>

call_user_func函數和call_user_func_array函數都支援引用,這讓他們和普通的函數調用更趨於功能一致:

<?phpfunction a($b) {  $b++; } $c = ; call_user_func('a', $c); echo $c;//顯示 call_user_func_array('a', array($c)); echo $c;//顯示 ?>另外,call_user_func函數和call_user_func_array函數都支援引用。view sourceprint?<?phpfunction increment(&$var){ $var++;}$a = ;call_user_func('increment', $a);echo $a; // call_user_func_array('increment', array(&$a)); // You can use this insteadecho $a; // ?>

下面給大家介紹使用call_user_func調用自訂函數

使用call_user_func函數,通過傳入字串函數,可以調用自訂函數,並且支援引用。

1.mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

調用第一個參數提供的自訂函數,後面的參數為自訂函數的參數,返回自訂函數的結果

function say($word){ echo $word;}call_user_func('say', 'hello world'); //hello world當然也可以調用類中的方法:class A { function say($word = '') {  echo $word; }} $a = new A(); //注意,必須是要執行個體化的,除非是staticcall_user_func(array($a, 'say'), 'hello world'); //hello world

2.mixed call_user_func_array ( callable $callback , array $param_arr )

話說call_user_func_array和call_user_func函數功能一樣,只是調用參數時有點區別:

function a($word){ echo $word;}class A { function say($word = '') {  echo $word; }}call_user_func_array('a', array('hello world')); //hello world$a = new A(); //注意,必須是要執行個體化的,除非是staticcall_user_func_array(array($a, 'say'), array('hello world')); //hello world

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.