【问题标题】:Using model constants in config file (CodeIgniter)在配置文件中使用模型常量(CodeIgniter)
【发布时间】:2012-04-01 14:00:43
【问题描述】:

我是 CodeIgniter 的新手。我将它用于我的个人项目。

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

我有这个类Hero_attributes,它有几个常量,例如:


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。在配置数组中,我想使用 Hero_attributes 类中的常量作为键,即:


$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 消息。

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

【问题讨论】:

  • 它不会工作,因为 config.php 变量是动态加载的

标签: php codeigniter codeigniter-2


【解决方案1】:

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

【讨论】:

  • 是的,我可以这样做,但我认为这与最佳编码实践不一致。我希望每段代码都属于正确的位置(类、配置等)。我真的不想使用所有混合常量的一个全局位置。
  • 我认为这是一种很好的做法,您可以明确定义常量的位置,并且将来很容易维护,因为您知道所有常量都定义在一个文件中
  • 好吧,我同意这一点。但是,如果常量与一个严格相关,比如说模块,那么 imo 最好将它们分开。当然,如果常量在许多不同的地方和上下文中有它的用途,那么为什么不让它成为全球性的。然而,我的常量通常用于严格定义的区域。不管怎样,谢谢你的回答:)
  • 我同意@Ventus。我现在正在编写一段代码,它可以向用户发送大量电子邮件。在消息模型中将消息状态作为常量而不是全局配置文件更合适。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多