codeIgniter中的函数帮助与另一个函数冲突

时间:2013-09-27 02:58:41

标签: php codeigniter phpbb3

在codeIgniter中,我自动加载url_helper.php
在我的网站上我也有一个phpbb论坛,因此在codeigniter中我试图include来自论坛的脚本。

问题是,phpbb尝试声明一个函数redirect(),但它已经在url_helper.php中声明,所以我得到以下错误

  

无法重新声明redirect()(之前已在声明中声明)   C:\ Apache24 \ htdocs \ system \ helpers \ url_helper.php:531)in   C:\ Apache24 \ htdocs \ forum \ includes \ functions.php在线   2562

我该怎么办呢?我可以在控制器功能中取消设置功能或删除url_helper吗?

2 个答案:

答案 0 :(得分:1)

还是有点黑客,但请看:http://php.net/manual/en/function.rename-function.php

您可以创建自己的url_helper,包含CI url_helper,并在include后调用:

rename_function('redirect','ci_redirect');

答案 1 :(得分:0)

好的,我找到了解决方法。在codeigniter的帮助程序库中,在声明函数之前,它首先检查它是否已经被声明。所以....

在我的控制器类的构造函数方法中,我加载了我需要的所有phpbb文件。这样它声明phpbb重定向函数和codeigniter“哦,已经有一个重定向函数”,所以它没有声明重定向函数...问题解决了

这样的事情:

class Register extends CI_Controller{

    public function __construct()
    {
        /* START phpbb */
        .
        .
        .
        require_once('forum/common.php');
        require_once('forum/includes/functions_user.php');
        require_once('forum/includes/functions_module.php');
        /* END phpbb */        

        //Continue as normal
        parent::__construct();
    }

    public function index(){
        //Your stuff works as normal now
    }
}