ホームページ > バックエンド開発 > PHPチュートリアル > PHP関数call_user_funcとcall_user_func_arrayの使用例を詳しく解説

PHP関数call_user_funcとcall_user_func_arrayの使用例を詳しく解説

伊谢尔伦
リリース: 2023-03-11 13:38:01
オリジナル
2045 人が閲覧しました

UCenterを見るとcall_user_funcという関数があったので自分で定義した関数かと思ったのですがどこにも見つからず、後でBaiduで検索してみたらcall_user_funcという関数があることが分かりました。 組み込み関数です

call_user_func関数 関数を呼び出す特殊なメソッドに似ています:


function a($b,$c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func('a', "111","222"); 
call_user_func('a', "333","444"); 
//显示 111 222 333 444
ログイン後にコピー

クラス内でメソッドを呼び出すのは実際には配列を使用します。開発者がそれをどのように考慮したかはわかりません。もちろん、新しいものを省略することは問題ありません。パラメータの明確化:

class a { 
function b($c) 
{ 
echo $c; 
} 
} 
call_user_func(array("a", "b"),"111"); 
//显示 111
ログイン後にコピー

call_user_func_array 関数は、クラス内のメソッドを呼び出すこともできます

function a($b, $c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func_array('a', array("111", "222")); 
//显示 111 222
ログイン後にコピー

call_user_func 関数と call_user_func_array 関数は両方とも

references

をサポートしており、これにより通常の関数呼び出しとの機能の一貫性が高まります:

Class ClassA 
{ 
function bc($b, $c) { 
$bc = $b + $c; 
echo $bc; 
} 
} 
call_user_func_array(array('ClassA','bc'), array("111", "222")); 
//显示 333
ログイン後にコピー
簡単な使用法php

function a(&$b) 
{ 
$b++; 
} 
$c = 0; 
call_user_func('a', &$c); 
echo $c;//显示 1 
call_user_func_array('a', array(&$c)); 
echo $c;//显示 2
ログイン後にコピー

の call_user_func_array の上記のルーチンの出力は次のようになります:
foobar got 1 and two

foo::bar got three and four

例 #2 call_user_func_array() using namespace name

<?php 
function foobar($arg, $arg2) { 
echo FUNCTION, " got $arg and $arg2\n"; 
} 
class foo { 
function bar($arg, $arg2) { 
echo METHOD, " got $arg and $arg2\n"; 
} 
} 
// Call the foobar() function with 2 arguments 
call_user_func_array("foobar", array("one", "two")); 
// Call the $foo->bar() method with 2 arguments 
$foo = new foo; 
call_user_func_array(array($foo, "bar"), array("three", "four")); 
?>
ログイン後にコピー

The Output of the上記のルーチンは次のようになります:
Hello Hannes!

Hello Philip!

例 3 ラムダ関数の使用

<?php 
namespace Foobar; 
class Foo { 
static
 public function test($name) { 
print "Hello {$name}!\n"; 
} 
} 
// As of PHP 5.3.0 
call_user_func_array(NAMESPACE .&#39;\Foo::test&#39;, array(&#39;Hannes&#39;)); 
// As of PHP 5.3.0 
call_user_func_array(array(NAMESPACE .&#39;\Foo&#39;, &#39;test&#39;), array(&#39;Philip&#39;)); 
?>
ログイン後にコピー

上記 ルーチンは次のように出力します:
int(8)


以上がPHP関数call_user_funcとcall_user_func_arrayの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート