2.6PHP复合(Compound)类型之可调用(callable)

回调函数可以通过 可调用(callable) 类型声明来表示。

可调用 (callable) 类型的本质是回调函数。

回调函数

回调函数可以是简单函数,还可以是类静态方法,匿名函数,箭头函数。

// 回调函数示范
function my_callback_function() {
    echo 'hello world!';
}

// 回调方法示范
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

调用回调函数

PHP是将回调函数以string形式传递的。

// 类型 1:简单的回调
call_user_func('my_callback_function'); 

// 类型 2:静态类方法回调
call_user_func(array('MyClass', 'myCallbackMethod')); 

// 类型 3:对象方法回调
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// 类型 4:静态类方法回调
call_user_func('MyClass::myCallbackMethod');

// 类型 5:父级静态类回调
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A

// 类型 6:实现 __invoke 的对象用于回调
class C {
    public function __invoke($name) {
        echo 'Hello ', $name, "\n";
    }
}

$c = new C();
call_user_func($c, 'PHP!');

call_user_func

call_user_func(callable $callback, mixed $parameter = ?, mixed $... = ?): mixed

第一个参数 $callback 是被调用的回调函数,其余参数是回调函数的参数。返回回调函数的返回值。

call_user_func_array

call_user_func_array(callable $callback, array $param_arr): mixed

第一个参数 $callback 是被调用的回调函数,数组参数(param_arr)是回调函数的参数。返回回调函数的结果。如果出错的话就返回false

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/10085.html

(0)
上一篇 2021年2月6日 02:44
下一篇 2021年2月7日 03:40

相关推荐

  • 2.3PHP标量(Scalar)类型之字符串(string)

    常规字符串,比如’string’、”string”;数值字符串,比如“888”。 1.单引号(”)字符串与双引号(“”)字符串的区别 区别一:单引号只支持单引号自身和反斜线自身的转义,而双引号除此之外还支持以下转义。 转义 含义 \n …

    PHP语言教程 2021年2月3日
    0230
  • 3.1PHP语言的命名空间(Namespace)

    什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录 /home/greg 和 /hom…

    PHP语言教程 2021年3月1日
    03080
  • 2.4PHP复合(Compound)类型之数组(Array)

    1.索引数组 索引数组中的值是有序的,通过索引访问。 索引数组中的值不必都属于同一个类型,而且可以随时替换值。 索引数组的长度(值的个数)可以动态改变,可以向索引数组添加、删除值。 2.关联数组 key 可以是 int 或者 string。value 可以是任意类型。 关联数组中的值是通过键访问。 关联数组里的值不必都…

    PHP语言教程 2021年2月4日
    01610

发表评论

登录后才能评论