php - laravel框架中的一个函数为啥可以这样用
PHPz
PHPz 2017-04-11 10:23:03
[PHP讨论组]


call_user_func()函数,我跟他一样用,写了个例子,但是会出现warning错误,

call_user_func() expects parameter 1 to be a valid callback, no array or string given in /Users/xxx/workplace/test/aa.php

在网上也没有搜到它这种用法,求教?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
高洛峰

例1:

function test() {
    echo "hello test";
}
call_user_func(function(){
    test();
});
//或者以字符串形式传入函数名
call_user_func("test");

碰到类中方法调用应该传入一个array

class Foo {
    public function bar() {
        echo "Hello bar!";
    }
}
$obj = new Foo();
call_user_func(array($obj, "bar"));

那么再看一个例子

<?php

class Foo {
    public static function getInitializer() {
        return "hello";
    }
}

function hello() {
    echo "world!";
}

call_user_func(Foo::getInitializer());

如果将上面例子中return改成echo,就会出现你所描述的错误,而hello也会被输出。

而在composer的getInitializer方法中返回的是个Closure对象,自然也被call_user_func所接受。

高洛峰

call_user_func

(PHP 4, PHP 5, PHP 7)
call_user_func — 把第一个参数作为回调函数调用

说明 ¶

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。
这个和call_user_func_array函数是同胞函数,也可以研究一下

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号