gpt4 book ai didi

php - 替代 PHP5 中的枚举类型?

转载 作者:可可西里 更新时间:2023-11-01 12:26:53 25 4
gpt4 key购买 nike

我有一个 PHP5 对象将消息传递给另一个,并且想为每条消息附加一个类型。例如,MSG_HOTMSG_WARMMSG_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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com