如何在PHP中保存常量
现在我的项目中有大量的常量字符串和枚举。从一开始,我就使用以下方法(伪php示例代码): 这种方法允许我在代码中的任何地方以以下方式获取常量,因为我在index.php中包含了“constants”类如何在PHP中保存常量,php,enums,Php,Enums,现在我的项目中有大量的常量字符串和枚举。从一开始,我就使用以下方法(伪php示例代码): 这种方法允许我在代码中的任何地方以以下方式获取常量,因为我在index.php中包含了“constants”类 $this->sendEmailByType(CONSTANTS::EMAIL_TYPE_NEW); 然而,我完全可以看到这种方法的缺点: Constants类重载了大量枚举和常量,很难获得正确的常量。命名约定有助于解决这个问题,但我不喜欢这样,因为它需要额外的思考来确定我需要什么常量 常
$this->sendEmailByType(CONSTANTS::EMAIL_TYPE_NEW);
然而,我完全可以看到这种方法的缺点:
提前谢谢。为什么不为每个上下文设置常量类呢。i、 e
class Statuses
{
const STATUS_NEW = 1;
const STATUS_UPDATED =2;
...
}
class EmailTypes
{
const EMAIL_TYPE_NEW = 1;
const EMAIL_TYPE_UPDATED =2;
...
}
稍后,当您或其他程序员希望为您的应用程序做出贡献时,他们可以轻松地检查他们期望的主题的相关常量,而不是查看大量常量
例如,一旦在电子邮件类型周围查找标志,我希望在
EmailType::
中找到它,如果没有,请自信地将其添加到同一类中。在不知道结构的其余部分的情况下很难回答,但我会在任何相关控制器(甚至实体)的顶部找到任何常量处理该区域的类。如果我想在多个控制器之间共享常量,该怎么办?是否严格要求在常量
类下包含所有常量?我希望与每个类相关的常量可以通过该类访问(这也是内置PHP常量的存在方式)。@apokryfos我完全同意,你比我快了几秒钟。不,没有严格的要求,我只是在创建常量类时缺乏良好的经验。我明白你的建议,看起来不错。但我想知道是否有更好的方法来保存它们。这肯定比我的想法要好。但是,什么类应该做一些与常量相关的附加逻辑?例如,我有10种状态,其中一些是“完成”,意思是,如果电子邮件处于“已接受”状态,则无法更改为任何其他状态,而其中一些是“正在进行”,这意味着该状态将在以后发生更改。所以我需要一个Functcion isStatusFinal($status)。我应该像你建议的那样在Statuses类中实现吗?我甚至建议去掉多余的前缀<代码>状态::新建就可以了。
class Statuses
{
const STATUS_NEW = 1;
const STATUS_UPDATED =2;
...
}
class EmailTypes
{
const EMAIL_TYPE_NEW = 1;
const EMAIL_TYPE_UPDATED =2;
...
}