php中来自2个不同库的函数名冲突
我有两个“库”,我需要在同一页上包括它们。简单的机器论坛和Wordpress 但是,两者的函数都是_admin(),相互冲突php中来自2个不同库的函数名冲突,php,function,Php,Function,我有两个“库”,我需要在同一页上包括它们。简单的机器论坛和Wordpress 但是,两者的函数都是_admin(),相互冲突 Fatal error: Cannot redeclare is_admin() (previously declared in /home/site.com/wordpress/wp-includes/query.php:100)in /home/site.com/smf/Sources/Security.php on line 82) 最好的办法是什么?因为我不想修
Fatal error: Cannot redeclare is_admin() (previously declared
in /home/site.com/wordpress/wp-includes/query.php:100)in /home/site.com/smf/Sources/Security.php on line 82)
最好的办法是什么?因为我不想修改对一个库的所有调用,例如,是\u admin2()。我相信您没有太多选择,只能重命名函数或将所有函数包装在一个类中。这就是PHP的问题所在,我相信您没有太多的选择,只能重命名函数,或者将所有函数封装在一个类中。这就是PHP的问题所在我会咬紧牙关,为较小的库手动重命名每个函数调用(我猜这将是一个)。祝你好运。我会咬紧牙关,为较小的库手动重命名每个函数调用(我猜这将是一个)。祝你好运。可以使用PHP5.3,它提供了对名称空间的支持。我不知道实现的细节,但它应该使您能够将库包装在不同的名称空间中
不幸的是,5.3仍然没有达到稳定的版本。如果您不能/不想使用它,我看到的唯一不涉及重命名的选项是:创建两个单独的PHP脚本,在不同的解释器中启动它们,并让它们以某种方式通信(管道、套接字、临时文件)。一种可能是使用PHP5.3,它支持名称空间。我不知道实现的细节,但它应该使您能够将库包装在不同的名称空间中
不幸的是,5.3仍然没有达到稳定的版本。如果您不能/不想使用它,我看到的唯一不涉及重命名的选项是:创建两个单独的PHP脚本,在不同的解释器中启动它们,并让它们以某种方式通信(管道、套接字、临时文件)。幸运的是,这是在简单机器论坛的is_admin删除中找到的评论
// Grudge chickens out and puts this in for combatibility. This will be ripped out on day one for SMF 1.2 though ;)
看来反正也不需要了。。。有一点令人担忧的是,每次升级时,我都必须记住删除这个…幸运的是,这是在简单的机器论坛上对is_admin的删除中发现的评论
// Grudge chickens out and puts this in for combatibility. This will be ripped out on day one for SMF 1.2 though ;)
看来反正也不需要了。。。有一点令人担忧的是,每次升级时,我都必须记住删除它。将函数重命名为
is\u admin\u wp()
和is\u admin\u smf()
。然后,定义自己的is_admin()
函数。这可能只是一个简单的包装:
function is_admin() {
// from what function is_admin was called?
list (, $last) = debug_backtrace();
if (strpos($last['file'], 'wordpress') >= 0) {
$fn = 'is_admin_wp';
} else {
$fn = 'is_admin_smf';
}
$args = func_get_args();
return call_user_func_array($fn, $args);
}
将函数重命名为
is\u admin\u wp()
和is\u admin\u smf()
。然后,定义自己的is_admin()
函数。这可能只是一个简单的包装:
function is_admin() {
// from what function is_admin was called?
list (, $last) = debug_backtrace();
if (strpos($last['file'], 'wordpress') >= 0) {
$fn = 'is_admin_wp';
} else {
$fn = 'is_admin_smf';
}
$args = func_get_args();
return call_user_func_array($fn, $args);
}
对于将来有这个问题的人来说,这不是一个坏主意。谢谢这对将来有这个问题的人来说是个不错的主意。谢谢