Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当从特定子目录调用时才执行PHP函数_Php_Function - Fatal编程技术网

仅当从特定子目录调用时才执行PHP函数

仅当从特定子目录调用时才执行PHP函数,php,function,Php,Function,我有一个现有的PHP应用程序,我正在尝试将PBB集成到其中。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应用程序中的函数,但这可能会导致将

我有一个现有的PHP应用程序,我正在尝试将PBB集成到其中。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调用时要使用的代码中其他地方具有相同名称的另一个函数。这似乎很实用,但我找不到这样的解决方案。

这正是名称空间的用途,但phpBB是旧的、粗糙的,不使用名称空间,所以我猜这不是您的选择。你最好的选择是在你的应用程序中重命名冲突的功能,或者只是将它们分开,然后简单地在iframe中显示你的phpBB论坛,并称之为day。如果您现有的php应用程序有需要集成的会话,希望您将会话保存在DB中,并且您可以编写一个连接器在两个应用程序之间传递会话数据,而不会有太多麻烦。否则,你就要倒霉了

你可以为YouSE条件创建一个包装器函数,如果它在子目录中,它将执行正确的函数,你也可以考虑RunKiTyFraseRealRealDebug,但是你需要在你的服务器上安装这个扩展。使用包装器或RunKiTyFraseRealEngy都需要编辑对我希望的函数的每次调用。避免。