可以向php中的任何函数添加回调吗?
我可以向php本机函数添加回调吗可以向php中的任何函数添加回调吗?,php,callback,Php,Callback,我可以向php本机函数添加回调吗 on('json_encode',function(){ echo "encoding something"; }); 如果是,是否可以添加post和预回调? 谢谢。不,您必须重写自己的包装函数。比如: function my_json_encode($data) { if (function_exists("json_encode_pre_callback")) { json_encode_pre_callback();
on('json_encode',function(){
echo "encoding something";
});
如果是,是否可以添加post和预回调?
谢谢。不,您必须重写自己的包装函数。比如:
function my_json_encode($data) {
if (function_exists("json_encode_pre_callback")) {
json_encode_pre_callback();
}
$return = json_encode($data);
if (function_exists("json_encode_post_callback")) {
json_encode_post_callback($return);
}
return $return;
}
或者,使用回调作为参数:
function my_json_encode($data, $pre = null, $post = null) {
if (is_callable($pre)) {
$pre();
}
$return = json_encode($data);
if (is_callable($post)) {
$post($return);
}
return $return;
}
my_json_encode(
$data,
function(){echo "doing encode";},
function($d){echo "done encode, value 1 is $d[1]";}
)
不,最好的方法是调用PHP本机函数的用户定义函数
尽管可以使用override_函数see docs重新定义PHP本机函数,但请注意apd扩展是。No!只有当函数的PHP文档说它接受回调参数时,例如array_filter或USORT,这可以使它接受函数名作为参数,而不是硬编码的前回调和后回调。这是事实,最近的PHP匿名函数更易于实现。我会编辑它。你好!我知道你在做什么。但这对我不起作用。我需要一些不需要改变函数名的东西。我想在脚本的开头添加一个文件,并向某些函数添加回调。不过还是要谢谢你!好吧,我想如果我贴了一个回答说不的话,那就不会有多大帮助了。所以我说不,并提供了一个解决办法。嘿,谢谢你的回答!我知道这个功能,但问题是我必须让我的用户安装apd扩展。我不想那样。谢谢你,安威!同样,这也是一个外部库。