1. call_user_func と call_user_func_array:
上記の 2 つの関数は、異なるパラメーター形式でコールバック関数を呼び出します。次の例を参照してください:
<?phpclass AnotherTestClass { public static function printMe() { print "This is Test2::printSelf.\n"; } public function doSomething() { print "This is Test2::doSomething.\n"; } public function doSomethingWithArgs($arg1, $arg2) { print 'This is Test2::doSomethingWithArgs with ($arg1 = '.$arg1.' and $arg2 = '.$arg2.").\n"; }}$testObj = new AnotherTestClass();call_user_func(array("AnotherTestClass", "printMe"));call_user_func(array($testObj, "doSomething"));call_user_func(array($testObj, "doSomethingWithArgs"),"hello","world");call_user_func_array(array($testObj, "doSomethingWithArgs"),array("hello2","world2"));
実行結果は次のとおりです:
bogon:TestPhp$ php call_user_func_test.php This is Test2::printSelf.This is Test2::doSomething.This is Test2::doSomethingWithArgs with ($arg1 = hello and $arg2 = world).This is Test2::doSomethingWithArgs with ($arg1 = hello2 and $arg2 = world2).
2. func_get_args、func_num_args、および func_get_args: これら 3 つの関数の共通の特徴は、すべてカスタムに関係するものです関数内でのみ使用でき、可変パラメータを持つカスタム関数に適しています。それらの関数のプロトタイプと簡単な説明は次のとおりです:
int func_num_args (void) 現在の関数のパラメーターの数を取得します。array func_get_args (void) 現在の関数のすべてのパラメータを配列の形式で返します。
mixed func_get_arg (int $arg_num) は、現在の関数の指定された位置にあるパラメーターを返します。0 は最初のパラメーターを表します。
<?phpfunction myTest() { $numOfArgs = func_num_args(); $args = func_get_args(); print "The number of args in myTest is ".$numOfArgs."\n"; for ($i = 0; $i < $numOfArgs; $i++) { print "The {$i}th arg is ".func_get_arg($i)."\n"; } print "\n-------------------------------------------\n"; foreach ($args as $key => $arg) { print "$arg\n"; }}myTest('hello','world','123456');
実行結果は次のとおりです:
Stephens-Air:TestPhp$ php class_exist_test.php The number of args in myTest is 3The 0th arg is helloThe 1th arg is worldThe 2th arg is 123456-------------------------------------------helloworld123456
3. function_exists と register_shutdown_function:
関数のプロトタイプと簡単な説明は次のとおりです:
bool function_exists (string $function_name)関数かどうかを判断します存在します。
void register_shutdown_function (callable $callback [,mixed $parameter[,mixed $... ]]) は、スクリプトの終了前、または途中で exit が呼び出されたときに、登録された関数を呼び出します。さらに、複数の関数が登録されている場合、それらの関数は登録された順序で順番に実行され、いずれかのコールバック関数で exit() が内部的に呼び出された場合、スクリプトはすぐに終了し、残りのコールバックは実行されません。 。
<?phpfunction shutdown($arg1,$arg2) { print '$arg1 = '.$arg1.', $arg2 = '.$arg2."\n";}if (function_exists('shutdown')) { print "shutdown function exists now.\n";}register_shutdown_function('shutdown','Hello','World');print "This test is executed.\n";exit();print "This comments cannot be output.\n";
実行結果は次のとおりです。
Stephens-Air:TestPhp$ php call_user_func_test.php shutdown function exists now.This test is executed.$arg1 = Hello, $arg2 = World