我有一个现有的PHP应用程序,我试图插入pbpBB。 phpBB具有与我现有的一些函数同名的函数。这会产生以下错误:
E_COMPILE_ERROR Error in file »functions.php« at line 121: Cannot redeclare redirect() (previously declared in /.../httpdocs/forum/includes/functions.php:2289)
我可以重命名phpBB应用程序中的函数,但这可能会导致将来的更新出现问题。在我的代码中,我将不得不重命名该函数的512个实例。命名空间需要同样的努力。
有没有办法指定只有在从特定目录调用时才应使用特定函数?例如,我将 redirect()定义为从httpdocs / forum调用时使用的函数,以及从/ httpdocs / myapp调用时代码中其他地方使用的同名函数。似乎它很实用,但我找不到这样的解决方案。
答案 0 :(得分:1)
这正是命名空间的用途,但是phpBB虽然古老而且非常苛刻,并且没有使用命名空间,所以我猜测这不是你的选择。您最好的选择是重命名应用程序中的冲突函数,或者只是将它们分开,只需在iframe中显示您的phpBB论坛并调用它。如果你现有的php应用程序有需要集成的会话,希望你将会话保存在数据库中,你可以编写一个连接器来在两个应用程序之间传递会话数据而不会有太多麻烦。否则,你会度过糟糕的一天。