Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 代码点火器模块扩展-对MX_路由器的访问级别::_set_default_controller()必须是公共的(如在类CI_Router中)_Php_Codeigniter_Codeigniter Hmvc - Fatal编程技术网

Php 代码点火器模块扩展-对MX_路由器的访问级别::_set_default_controller()必须是公共的(如在类CI_Router中)

Php 代码点火器模块扩展-对MX_路由器的访问级别::_set_default_controller()必须是公共的(如在类CI_Router中),php,codeigniter,codeigniter-hmvc,Php,Codeigniter,Codeigniter Hmvc,我得到了流行的模块化扩展-HMVC安装从 用codeigniter 2.2.2设置,但是当一切正常时,我得到了这个错误 对MX_路由器的访问级别::_set_default_controller()必须是公共的(就像在类CI_Router中一样),位于第241行的C:..\application\third_party\MX\Router.php中 解决方案1 我不得不在Router.php中更改几个方法visibility,因此我将以下方法从protected更改为public,以将其修复

我得到了流行的模块化扩展-HMVC安装从

用codeigniter 2.2.2设置,但是当一切正常时,我得到了这个错误

对MX_路由器的访问级别::_set_default_controller()必须是公共的(就像在类CI_Router中一样),位于第241行的C:..\application\third_party\MX\Router.php中

解决方案1 我不得不在Router.php中更改几个方法visibility,因此我将以下方法从
protected
更改为
public
,以将其修复

_set_default_controller()
_set_request()
_set_default_controller()
它几乎成功了,但现在我在熟悉的欢迎使用CodeIgniter消息上方收到了一条警告

Message: Undefined property: MY_Router::$translate_uri_dashes
所以我把这个属性包装在一个if-not-empty上,这样绕过这个属性

if(!empty($this->translate_uri_dashes))
        {
            if ($this->translate_uri_dashes === TRUE)
            {
                foreach(range(0, 2) as $v)
                {
                    isset($segments[$v]) && $segments[$v] = str_replace('-', '_', $segments[$v]);
                }
            }
        }
现在它工作了


解决方案2 有一个现成的HMVC ci,可以从

但它是ci 2.0.3版本,而不是ci 2.2.2

解决方案3(最佳)
如果您将ci 2.0.3预配置版本(上面的链接)中的核心文件(MY_Loader和MY_Router)和第三方文件夹(MX)放在ci 2.2.2中的相应位置,它将正常工作。

此处的HMVC转到下载,然后进行分支。我认为只支持CI3是的,现在他们只关注CI3,而不是ci2.x的最后一个稳定版本