【php杂谈】php如何解决函数引用传参不能为空,使用函数回调和global关键词
php 函数调用有一个引用传参的功能,所谓引用的意思就是你传过来的实参到函数里面,在这个函数里面通过代码改变了这个参数的值,然后这个外部实参的值也会跟着变(变量的内存地址是同一个),这就叫引用传参!
但是呢,函数引用参数有一个缺点,就是不能默认为空,也就是调用函数的时候这个引用参数不能省略!
那么如何解决这个方法,我们就可以用到回调函数!!经初步测试,php5.6及以上是支持的,其他版本未测试!
下面直接上代码
<?php $a = '测试'; function hook($value , $call){ $value = '回调成功了!'; $call($value); } hook($a, function ($data = null ){ global $a; $a = $data; }); echo $a;
这样写的好处就是,我们在执行某个钩子的时候,不需要知道传过来的实参变量名是什么(相当于知道了实参变量名,再global一下)
有了这个操作,就可以实现很多复杂的函数复用,例如知名的thinkPHP框架就用到了类似的技术知识点
效果如下
-- 展开阅读全文 --