Function handling 函数 实例

来源:互联网 发布:mysql客户端工具 编辑:程序博客网 时间:2024/05/01 19:09


call_user_func_array — 让参数以数组的形式调用一个函数
call_user_func — 调用一个存在的函数
create_function — 建立一个函数
func_get_arg — 获取函数中某个参数的值
func_get_args — 获取函数的所有参数并组成数组
func_num_args — 获取一个函数的参数个数
function_exists — 判定一个函数是否存在
get_defined_functions — 获取已有的函数信息
register_shutdown_function — 注册一个页面载入完成后运行的函数
register_tick_function — 注册一个按要求调用的函数
unregister_tick_function — 取消一个按要求调用的函数


1、首先是call_user_func_array和call_user_func的区别

class myclass {
  function hello($a,$b)
  {
    echo $a,"*",$b;
  }
}

$classname = "myclass";
//call_user_func依次列出参数
call_user_func(array( $classname, 'hello'), 8, 9);

//call_user_func_array把参数写成一个数组
call_user_func_array( array( $classname, 'say_hello'), array( 3, 5));

2、create_function

$newfunc = create_function('$a,$b,$c', 'return  $a + $b * $c;');
echo "New anonymous function: $newfunc<br>";
echo $newfunc(1, 2, 3);

//结果

//   New anonymous function: lambda_21
//   7

3、

function  foo(){

    //有2个参数
    $a = func_num_args();
    echo "参数个数",$a;
    //以数组形式返回所有参数
    var_export( func_get_args() ) ;
    //获取弟2个参数
    echo func_get_arg(1);

}
foo(7,9);

4、函数是否存在

if(function_exists('foo')){
    echo "yes";
}else {
    echo "no";
}

5、get_defined_functions,取得所有已经定义的函数,把函数名称放进一个数组里面。例如:

$functions['internal']所有元素是PHP自身定义的函数,这次想知道PHP到底定义了多少个函数的兄弟们有福了,这个可能不包括扩展库的函数,例如xml扩展库和gd扩展库!
另外一个元素$functions['user']中则收纳了用户自身定义的所有函数——这个地方要注意啊,我们所说的所有是指当前运行的程序文件和这个程序文件所包含的其他文件中定义的函数。

他不管用户定义的时候写的函数名是不是有大写字母,这些大写字母是不是有特殊含义,他通通的把函数名转换为小写之后才写进数组里面

例如我们定义两个函数:

<?php
function shortHim(){}
function helloYou(){}
$functions=get_defined_functions();
var_dump($functions['user']);

//结果是这样的
//array(2) {  [0]=>  string(8) "shorthim"  [1]=>  string(9) "helloyou"}

6、能够在脚本终止前回调注册的函数

function Test()
{         
     echo 'end';
}
register_shutdown_function('Test');
echo "start<br/>";

7、

function foo1($str) {
    static $i = 0;
    print "$str: $i<br>";
    $i++;
}
register_tick_function("foo1", "count");
//unregister_tick_function("foo1");

declare (ticks = 9) {
    for($i=0; $i<20; $i++) {
        echo "$i<br>";
    }
}

//结果

0
1
2
3
4
count: 0
5
6
7
8
count: 1
9



原创粉丝点击