小编Bri*_*ian的帖子

替代PHP5中的枚举类型?

我有一个PHP5对象将消息传递给另一个,并希望为每个消息附加一个类型.例如,MSG_HOTMSG_WARM,和MSG_COLD.如果PHP5有一个枚举类型,我可能会用它来定义消息类型,但(除非我错了)没有这样的动物.我看了几个选项:

字符串('MSG_HOT','MSG_WARM''MSG_COLD')是不好的,因为我不可避免地会输入类似的东西'MSG_WRAM',事情会破裂.数字遇到同样的问题,也不太清楚.

定义工作:

define('MSG_HOT', 1);
define('MSG_WARM', 2);
define('MSG_COLD', 3);
Run Code Online (Sandbox Code Playgroud)

但污染全局命名空间,因此需要更详细的名称来确保唯一性.我宁愿不让我的代码乱丢东西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;
}
Run Code Online (Sandbox Code Playgroud)

我认为这很好,但对于看起来应该是一个简单的概念也是很多工作.

我错过了一个更好的选择吗?

php enums

9
推荐指数
2
解决办法
6515
查看次数

如何将Win32 HRESULT转换为int返回值?

我正在用C++编写一个Windows控制台应用程序,并希望在成功时返回零,并在失败时S_OK返回有意义的错误代码(即,应该返回0,并且E_OUTOFMEMORY应该返回不同的返回值E_FAIL,依此类推).以下是一个好的方法吗?:

int wmain(int argc, wchar_t *argv[])
{
    HRESULT hr = DoSomething();
    return (int) hr;
}
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?也许是我忘记或找不到的标准Win32 API函数或宏?

c++ windows winapi

2
推荐指数
2
解决办法
6857
查看次数

标签 统计

c++ ×1

enums ×1

php ×1

winapi ×1

windows ×1