我使用以下方案,但这并不一定只适用于CodeIgniter 。
HMVC :https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
国际化(i18n):https://github.com/waqleh/codeigniter-language-in-url-internationalization
HMVC& i18n通过扩展CI_Config
(和相关的CI_
类)来工作。
为了让i18n与 HMVC一起工作,我首先需要相应的HMVC文件,然后进一步扩展该类。
例如,CI_Config
由HMVC MX_Config
扩展,然后进一步要求&由i18n扩展MY_Config
。
但现在i18n 仅在 HMVC已经到位时才有效。
如果没有HMVC(没有MX_Config
且相关)怎么办?
我希望i18n可以使用/不使用HMVC 。
是否有办法有条件地要求&延伸一类或另一类?或者更确切地说,在没有碰撞的情况下延长CI_Config
(及相关)两次?或者有另一种方法可以实现我想要的目标吗?
HMVC MX_Config
部分:
/**
* HMVC
*/
class MX_Config extends CI_Config
{
i18n MY_Config
偏:
/* load HMVC's MX_Config class */
require APPPATH . "third_party/MX/Config.php";
/**
* Language
*/
class MY_Config extends MX_Config
{
答案 0 :(得分:1)
如果类MX_Config
不存在,请如何动态声明它?
<?php
class CI_Config {}
if (!class_exists('MX_Config')) {
class MX_Config extends CI_Config {}
}
class MY_Config extends MX_Config {}
$config = new MY_Config();
var_dump(
$config instanceof MX_Config,
$config instanceof CI_Config
);
有关示例,请参阅:
答案 1 :(得分:0)
localheinz的回答是有效的,但没有考虑到:
CodeIgniter加载核心文件CI_
&amp; {/ 1}} 之前 HMVC MY_
。因此,无法MX_
检查是否声明了MY_
。
我也不想编辑核心MX_
文件,因为它们不打算修改。
工作解决方案:
注意:以下相同的逻辑可以应用于其他CI_
类。
MY_
部分:
MY_Config