• PHP之call user func()函数


      在实际开发中通常会遇到这样的问题,决定调用某个函数是通过传入的参数决定的,例如:

    1 $functionName=$_post['functionName'];

    接着我们需要访问一个叫$functionName的方法,PHP有一个内置函数call_user_func,该函数允许用户调用直接写的函数并传入一定的参数:

    1、最普通的调用:

    1 <?php
    2 function order($a,$b) 
    3 { 
    4  echo $a; 
    5  echo $b; 
    6 } 
    7 call_user_func('order', "",""); 
    8 ?>

    2、调用类内部的方法

    1 <?php
    2 class utils { 
    3  function class1($a) 
    4  { 
    5   echo $a; 
    6  } 
    7 } 
    8 call_user_func(array("utils", "class1"),""); 
    9 ?>

    3、call_user_func_array函数类似于call_user_func,前者将传递的参数放到了一个数组中

    1 <?php
    2 function class1($a, $b) 
    3 { 
    4  echo $a; 
    5  echo $b; 
    6 } 
    7 call_user_func_array('class1', array("", "")); 
    8 ?>

    4、call_user_func_array函数也可以这么玩

     1 <?php
     2 Class Class1
     3 { 
     4    function person($b, $c) { 
     5    echo $b;
     6    echo $c;
     7    } 
     8 } 
     9 call_user_func_array(array('Class1','person'), array("", "")); 
    10 ?>

    call_user_func调用自定义函数

    调用第一个参数提供的自定义函数,后面的参数为自定义函数的参数,返回自定义函数的结果

     1 function say($word)
     2 {
     3  echo $word;
     4 }
     5 call_user_func('say', 'hello world'); 
     6 
     7 
     8 //当然也可以调用类中的方法:
     9 class A {
    10      function say($word = '')
    11      {
    12       echo $word;
    13      }
    14 } 
    15 $a = new A(); //注意,必须是要实例化的,除非是static
    16 call_user_func(array($a, 'say'), 'hello world'); //hello world

    call_user_func_array调用自定义函数

     1 function a($word)
     2 {
     3  echo $word;
     4 }
     5 class A {
     6    function say($word = '')
     7    {
     8     echo $word;
     9    }
    10 }
    11 call_user_func_array('a', array('hello world')); 
    12 $a = new A(); //注意,必须是要实例化的,除非是static
    13 call_user_func_array(array($a, 'say'), array('hello world'));  //只是传入参数有点区别

    两个函数都支持引用:

     1 <?php
     2 function a($b) 
     3 { 
     4   $b++; 
     5 } 
     6 $c = ; 
     7 call_user_func('a', $c); 
     8 echo $c;
     9 call_user_func_array('a', array($c)); 
    10 echo $c;
    11 
    12 
    13 //call_user_func函数和call_user_func_array函数都支持引用。
    14 
    15 function increment(&$var)
    16 {
    17   $var++;
    18 }
    19 $a = ;
    20 call_user_func('increment', $a);
    21 echo $a; 
    22 call_user_func_array('increment', array(&$a));
    23 echo $a;
    24 ?>
  • 相关阅读:
    浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
    Spring中ClassPathXmlApplicationContext类的简单使用
    测试计划/系统风险 (设计方面、开发方面、测试本身 等风险)
    浏览器兼容
    4.0 爬虫
    2.1 IDEA
    2.3 接口测试
    1.1测试分类
    1.3 ODPS
    2.1 Word 插入 smartart、图表
  • 原文地址:https://www.cnblogs.com/Steven-shi/p/5803759.html
Copyright © 2020-2023  润新知