zoukankan      html  css  js  c++  java
  • PHP中功能强大却少使用的函数

    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 — 取消一个按要求调用的函数 

    get_defined_functions可以获取所有的PHP函数和自定义的函数:

    Php代码  收藏代码
    1. <?php  
    2. function a(){}  
    3. $b = get_defined_functions();  
    4. print_r($b);  
    5. //也许会显示1000多个已定义了的函数:)  
    6. ?>  


    function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。 

    Php代码  收藏代码
    1. <?php  
    2. if (function_exists('a')) {  
    3.     echo "yes";  
    4. else {  
    5.     echo "no";  
    6. }  
    7. function a(){}  
    8. // 显示 yes  
    9. ?>  


    call_user_func函数类似于一种特别的调用函数的方法,使用方法如下: 

    Php代码  收藏代码
    1. <?php  
    2. function a($b,$c)  
    3. {  
    4.     echo $b;  
    5.     echo $c;  
    6. }  
    7. call_user_func('a'"111","222");  
    8. call_user_func('a'"333","444");  
    9. //显示 111 222 333 444  
    10. ?>  


    调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:

    Php代码  收藏代码
    1. <?php  
    2. class a {  
    3.     function b($c)  
    4.     {  
    5.         echo $c;  
    6.     }  
    7. }  
    8. call_user_func(array("a""b"),"111");  
    9. //显示 111  
    10. ?>  


    call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰: 

    Php代码  收藏代码
    1. <?php  
    2. function a($b$c)  
    3. {  
    4.     echo $b;  
    5.     echo $c;  
    6. }  
    7. call_user_func_array('a'array("111""222"));  
    8. //显示 111 222  
    9. ?>  


    call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:

    Php代码  收藏代码
    1. <?php  
    2. function a(&$b)  
    3. {  
    4.     $b++;  
    5. }  
    6. $c = 0;  
    7. call_user_func('a', &$c);  
    8. echo $c;//显示 1  
    9. call_user_func_array('a'array(&$c));  
    10. echo $c;//显示 2  
    11. ?>  


    func_num_args函数可以获取函数接受到参数的数量:
     

    Php代码  收藏代码
    1. <?php  
    2. function a()  
    3. {  
    4.     echo func_num_args();  
    5. }  
    6. a(111, 222, 333);  
    7. //显示 3  
    8. ?>  


    func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用 func_get_arg还可以获取额外的参数: 

    Php代码  收藏代码
    1. <?php  
    2. function a()  
    3. {  
    4.      echo func_get_arg(1);  
    5. }  
    6. a (111, 222, 333);  
    7. //显示 222  
    8. ?>  


    func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:
     

    Php代码  收藏代码
    1. <?php  
    2. function a()  
    3. {  
    4.     $numargs = func_num_args();  
    5.     $b = func_get_args();  
    6.     for ($i = 0; $i < $numargs$i++) {  
    7.         echo $b[$i];  
    8.     }  
    9. }  
    10. a(111, 222, 333);  
    11. //显示 111 222 333  
    12. ?>  


    create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇 特,要注意第二个参数内的语句要有“;”分隔:

    Php代码  收藏代码
    1. <?php  
    2. $newfunc = create_function('$a,$b''return $a + $b;');  
    3. echo $newfunc;  
    4. echo $newfunc(2, 3);  
    5. //显示 lambda_1 5  
    6. ?>  


    register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓 存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:

    Php代码  收藏代码
    1. <?php  
    2. function a() {  
    3.    echo  222 ;  
    4. }  
    5. echo 111;  
    6. register_shutdown_function('a');  
    7. //显示 111 222  
    8. ?>   
    Php代码  收藏代码
    1. <?php  
    2. class a  
    3. {  
    4.    function b ($c)  
    5.    {  
    6.       echo $c;  
    7.    }  
    8. }  
    9. register_shutdown_function (array ('a''b'), '111');  
    10. //显示 111  
    11. ?>  


    register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使 用,那么就先了解一下declare和tick:

    Php代码  收藏代码
    1. declare (directive){  
    2. statement  
    3. }  


    Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。举例如下:

    Php代码  收藏代码
    1. <?  
    2. function foo($str) {  
    3. static $i = 0;  
    4. print "$str: $i<br>";  
    5. $i++;  
    6. }  
    7. register_tick_function("foo""count");  
    8. declare (ticks = 6) {  
    9. for($i=0; $i<20; $i++) {  
    10. echo "$i<br>";  
    11. }  
    12. }  
    13. ?>  


    在这个例子中的declare(ticks = N){statement}流程控制里面,每执行6行(ticks = 6)代码,就需要运行一次foo()函数,通过更改ticks的值,我们可以获得不同的运行结果。

  • 相关阅读:
    UIButton(在代码中使用)
    UIButton的常见设置
    设置按钮的背景图片
    Java Web学习总结(15)——JSP指令
    Java Web学习总结(14)——JSP基础语法
    Java Web学习总结(14)——JSP基础语法
    Oracle学习总结(9)—— Oracle 常用的基本操作
    Oracle学习总结(9)—— Oracle 常用的基本操作
    Oracle学习总结(10)——45 个非常有用的 Oracle 查询语句
    Oracle学习总结(10)——45 个非常有用的 Oracle 查询语句
  • 原文地址:https://www.cnblogs.com/rmbteam/p/2236994.html
Copyright © 2011-2022 走看看