您的位置:首页 > 编程语言 > PHP开发

PHP之call user func()函数

2016-08-24 17:02 281 查看
  在实际开发中通常会遇到这样的问题,决定调用某个函数是通过传入的参数决定的,例如:

$functionName=$_post['functionName'];


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

1、最普通的调用:

<?php
function order($a,$b)
{
echo $a;
echo $b;
}
call_user_func('order', "","");
?>


2、调用类内部的方法

<?php
class utils {
function class1($a)
{
echo $a;
}
}
call_user_func(array("utils", "class1"),"");
?>


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

<?php
function class1($a, $b)
{
echo $a;
echo $b;
}
call_user_func_array('class1', array("", ""));
?>


4、call_user_func_array函数也可以这么玩

<?php
Class Class1
{
function person($b, $c) {
echo $b;
echo $c;
}
}
call_user_func_array(array('Class1','person'), array("", ""));
?>


call_user_func调用自定义函数

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

function say($word)
{
echo $word;
}
call_user_func('say', 'hello world');

//当然也可以调用类中的方法:
class A {
function say($word = '')
{
echo $word;
}
}
$a = new A(); //注意,必须是要实例化的,除非是static
call_user_func(array($a, 'say'), 'hello world'); //hello world


call_user_func_array调用自定义函数

function a($word)
{
echo $word;
}
class A {
function say($word = '')
{
echo $word;
}
}
call_user_func_array('a', array('hello world'));
$a = new A(); //注意,必须是要实例化的,除非是static
call_user_func_array(array($a, 'say'), array('hello world'));  //只是传入参数有点区别


两个函数都支持引用:

<?php
function a($b)
{
$b++;
}
$c = ;
call_user_func('a', $c);
echo $c;
call_user_func_array('a', array($c));
echo $c;

//call_user_func函数和call_user_func_array函数都支持引用。

function increment(&$var)
{
$var++;
}
$a = ;
call_user_func('increment', $a);
echo $a;
call_user_func_array('increment', array(&$a));
echo $a;
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: