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