PHP函数处理函数实例详解

WBOY
Libérer: 2016-06-23 14:35:43
original
937 Les gens l'ont consulté

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"));
Copier après la connexion

运行结果如下:

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).
Copier après la connexion

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');
Copier après la connexion

运行结果如下:

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
Copier après la connexion

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";
Copier après la connexion

运行结果如下:

Stephens-Air:TestPhp$ php call_user_func_test.php shutdown function exists now.This test is executed.$arg1 = Hello, $arg2 = World
Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal