call_user_func函数

Posted brady-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了call_user_func函数相关的知识,希望对你有一定的参考价值。

一直不知道这个函数怎么用,觉得好高大上

 

call_user_func($class."::hello"); 第一次看到这个写法一脸懵逼,这是啥 

后来我去写 写成下面
call_user_func($class,"::hello"); 
一直报错 说第一个参数不是个合法的回调 ,我找了好半天才发现中间是点连接 而不是逗号,还以为是两个参数
<?php
namespace Brady;
class Test
{
public function hello($name)
{
echo $name;
}
}

$class = Test::class;

#call_user_func(array($class,"hello"));
call_user_func(Test::class."::hello","hellllll");
call_user_func($class."::hello","0000088");
call_user_func(array($class,‘hello‘),"0000088");

class index
{
public function doindex()
{
echo "我被调用了";
}
}
$classname = index::class;

call_user_func($classname .‘::doindex‘);

 下面是php手册里面的例子 果然手册才是最牛逼的

 

(PHP 4, PHP 5, PHP 7)

call_user_func — 把第一个参数作为回调函数调用

 

call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed

Example #2 call_user_func() 的例子

<?php
function barber($type)
{
    echo "You wanted a $type haircut, no problem\n";
}
call_user_func(‘barber‘, "mushroom");
call_user_func(‘barber‘, "shave");
?>

以上例程会输出:

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

Example #3 call_user_func() 命名空间的使用

<?php

namespace Foobar;

class Foo {
    static public function test() {
        print "Hello world!\n";
    }
}

call_user_func(__NAMESPACE__ .‘\Foo::test‘); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .‘\Foo‘, ‘test‘)); // As of PHP 5.3.0

?>

以上例程会输出:

Hello world!
Hello world!

Example #4 用call_user_func()来调用一个类里面的方法

<?php

class myclass {
    static function say_hello()
    {
        echo "Hello!\n";
    }
}

$classname = "myclass";

call_user_func(array($classname, ‘say_hello‘));
call_user_func($classname .‘::say_hello‘); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject, ‘say_hello‘));

?>

以上例程会输出:

Hello!
Hello!
Hello!

以上是关于call_user_func函数的主要内容,如果未能解决你的问题,请参考以下文章

php自定义函数call_user_func和call_user_func_array详解

call_user_func

call_user_func函数

PHP函数详解:call_user_func()使用方法

call_user_func函数

php回调函数call_user_func和call_user_func_array详解