2012-04-01 56 views
2

我是CodeIgniter的新手。我将它用于我的个人项目。在配置文件中使用模型常量(CodeIgniter)

我想遵循的事情之一是坚持最好的编码实践。其中之一是DRY规则(不要重复自己)。我尝试在适当的模型类中定义一些常量,并在代码中的其他地方使用它们,所以当涉及到一点改变时,它只能在一个地方完成。

我有这个类有哪几种常量,例如:


class Hero_attributes 
{ 
    const ID = 'id'; 
    const NAME = 'name'; 
    const LEVEL = 'level'; 
    const MAG_LEVEL = 'maglevel'; 
    const VOCATION = 'vocation'; 
    const GENDER = 'sex'; 
    const SPEED = 'speed' 
    (...) 
} 

我也作出了这是自动加载自定义配置文件tenkai_config.php。在配置阵列我想使用常量从类作为密钥,即:


$config['vocations']['default'] = array(
    'hero' => array(
     Hero_attributes::LAST_LOGIN => 0, 
     Hero_attributes::LEVEL => 1, 
     Hero_attributes::MAG_LEVEL => 80, 
     Hero_attributes::RESIDENCE => 1, 
     Hero_attributes::POSITION_X => 73, 
     Hero_attributes::POSITION_Y => 181, 
     Hero_attributes::POSITION_Z => 6, 
     (...) 
    ) 
); 

不过,我得到Fatal error: Class 'Hero_attributes' not found in C:\wamp_new\www\yourwodb\application\config\tenkai_config.php on line 29消息。

如何在配置文件中使用常量?

+0

它不会工作,因为config.php变量动态加载 – safarov 2012-04-01 18:21:43

回答

5

如果你只需要定义常量。你可以在./application/config/constants.php文件中定义它们,它们在整个应用程序中可用

+2

是的,我可以这样做,但在我看来,它不符合最佳编码实践。我希望每一段代码都属于正确的地方(类,配置等)。我真的不想用全混合常量的地方。 – Ventus 2012-04-02 10:20:25

+0

我认为这是一个很好的做法,你有具体的定义你的常量的地方,将来很容易维护,因为你知道所有的常量都在一个文件中定义 – 2012-04-02 10:34:11

+0

嗯,我可以同意这一点。但是,如果常量与一个模块严格相关,比如说模块,那么最好让它们分开。当然,如果恒定在许多不同的地方和环境中使用,那么为什么不使它成为全球性的。然而,我的常量通常被用在严格定义的区域中。无论如何,谢谢你的答案:) – Ventus 2012-04-22 13:29:38

0

您需要自动加载Hero_attributes模型类。在自动加载配置文件之前可能必须这样做。

对不起,我之前的回复被版主删除,因为我问了一个问题。