类中表示类型或消息的字符串列表的设计模式


Design pattern for list of strings in class which represent a type or a message

主题标题可能不是一个很好的描述我的问题,但我没能找到一个更好的。

随着时间的推移,我遇到的一个常见问题基本上是定义一个包含代表某种类型或状态的常量变量的类。

<?php
class Notification {
     const TYPE_MAIL = 'mail';
     const TYPE_EXPORT = 'export';
     ...
}

然后将对象存储在存储层中,稍后再检索它。检索这些对象的一些常用查询是'where type = "mail"'。

当然,应用程序会增长,类型也会继续添加。有人能给我指出一个好的设计模式来处理这种架构问题吗?我很想看到一些避免这种静态声明的结构的例子。

谢谢

我知道这个问题,我听说过这个问题叫做使用幻数(代码中使用的未定义字符串常量)

我在这里找到了一篇文章:实用的PHP重构-神奇的数字更好的链接:SO -编码风格

我喜欢做的是在使用它们的实体/模型中添加所有相关的常量,这样它们就被放置在你的应用程序的正确上下文中。

例如,在我的Customer实体/模型中,我在类的顶部有一个区域用于类常量,我的Customer表中的一个字段是type,相关常量是const TYPE_DEMO = 0; const TYPE_SHOP = 1; const TYPE_SOMETHINGELSE = 99;

结果是当使用它们时,我可以说$customerType = Customer::TYPE_SHOP;,这是非常可读的:)