作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 PHP5 对象将消息传递给另一个,并且想为每条消息附加一个类型。例如,MSG_HOT
、MSG_WARM
和 MSG_COLD
。如果 PHP5 有一个枚举类型,我可能会用它来定义消息类型,但是(除非我弄错了)没有这样的动物。我查看了几个选项:
字符串('MSG_HOT'
、'MSG_WARM'
和 'MSG_COLD'
)是不好的,因为我不可避免地会输入类似 'MSG_WRAM'
然后事情就会崩溃。数字也有同样的问题,也不太清楚。
定义工作:
define('MSG_HOT', 1);
define('MSG_WARM', 2);
define('MSG_COLD', 3);
但会污染全局命名空间,因此需要更冗长的名称来确保唯一性。我不希望我的代码中充斥着诸如 APPLICATIONNAME_MESSAGES_TYPE_HOT
之类的东西。
最后,我可以使用类名来区分类型,如下所示:
class MessageHot extends Message {}
class MessageWarm extends Message {}
class MessageCold extends Message {}
class Message
{
public function Type()
{
return get_class($this);
}
public function Data()
{
return $this->data;
}
public function __construct($data)
{
$this->data = $data;
}
private $data;
}
这很好,我认为,但对于看起来应该是一个简单概念的东西来说,也需要做很多工作。
我是否缺少更好的选择?
最佳答案
一个非常常见的约定是在 PHP 中使用类常量。
例如
class Message
{
const HOT = 0;
const WARM = 1;
const COLD = 2;
}
关于php - 替代 PHP5 中的枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185482/
我是一名优秀的程序员,十分优秀!