PHP函数处理函数实例详解

WBOY
Freigeben: 2016-06-23 14:35:43
Original
937 Leute haben es durchsucht

1. call_user_func和call_user_func_array: 

    以上两个函数以不同的参数形式调用回调函数。见如下示例:  

 

<?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"));
Nach dem Login kopieren

运行结果如下:

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

2. func_get_args、func_num_args和func_get_args:

这三个函数的共同特征是都很自定义函数参数相关,而且均只能在函数内使用,比较适用于可变参数的自定义函数。他们的函数原型和简要说明如下:
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');
Nach dem Login kopieren

运行结果如下:

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

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

运行结果如下:

Stephens-Air:TestPhp$ php call_user_func_test.php shutdown function exists now.This test is executed.$arg1 = Hello, $arg2 = World
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