PHP函数参考28-函数处理相关
-
function_exists — 如果给定的函数已经被定义就返回 TRUE
在已经定义的函数列表(包括系统自带的函数和用户自定义的函数)中查找 function_name。
-
func_get_args — 返回一个包含函数参数列表的数组
获取函数参数列表的数组。
该函数可以配合 func_get_arg() 和 func_num_args() 一起使用,从而使得用户自定义函数可以接受自定义个数的参数列表。
我们不建议经常使用这个函数,因为不建议给已定义无参函数传递参数的行为。
```php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}
foo(1, 2, 3);//虽然foo定义时是无参的,但这里还是不会报错的
```
建议传递一个数组或对象,可以用于灵活扩展参数。
-
func_num_args — Returns the number of arguments passed to the function
-
func_get_arg — 返回参数列表的某一项
-
call_user_func — 把第一个参数作为回调函数调用
call_user_func( callable $callback[, mixed $parameter[, mixed $...]] ) : mixed
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。
function userTest($type) { echo $type."\n"; } $func = "userTest"; call_user_func($func, "string"); call_user_func($func, "boolean"); call_user_func_array($func,["array"]);
class myclass { public function sayHello($name) { echo "Hello $name!\n"; } } $classname = "myclass"; call_user_func(array($classname, 'sayHello'),"jm");//如果是类或方法是static时,可以采用这个方式 call_user_func($classname .'::sayHello',"jm"); // As of 5.2.3,但我们不建议 $myobject = new myclass(); call_user_func(array($myobject, 'sayHello'),"jm");//如果不是static的类与方法,我们建议采用这个方式 call_user_func_array([$myobject,"sayHello"], ['jm']);
-
call_user_func_array — 调用回调函数,并把一个数组参数作为回调函数的参数
把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。
-
create_function — 创建一个匿名函数
$newfunc = create_function('$a,$b', 'return "$a+ $b = " . ($a + $b);'); echo $newfunc(1,2);//1+ 2 = 3
-
forward_static_call_array — Call a static method and pass the arguments as array
-
forward_static_call — Call a static method
-
get_defined_functions — 返回所有已定义函数的数组
-
register_shutdown_function — 注册一个会在php中止时执行的函数
注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。
可以多次调用 register_shutdown_function() ,这些被注册的回调会按照他们注册时的顺序被依次调用。如果你在注册的方法内部调用 exit(), 那么所有处理会被中止,并且其他注册的中止回调也不会再被调用。
function willExit($params){ print_r($params); echo "i am exit now."; } register_shutdown_function('willExit',["app"]);//同样支持函数、对象方法、参数
注意:如果进程被信号SIGTERM或SIGKILL杀死,那么中止函数将不会被调用。
-
register_tick_function — 注册一个在每一次时钟周期触发的执行的函数
Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。
不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。
declare(ticks=1); // A function called on each tick event function tick_handler() { echo "tick_handler() called\n"; } register_tick_function('tick_handler'); $a = 1; if ($a > 0) { $a += 2; print_r($a."\n); }
tick_handler() called tick_handler() called tick_handler() called 3 tick_handler() called
-
unregister_tick_function — 取消注册时钟周期触发函数