【问题标题】:Why zend framework 2 defines integer constants like 1 2 4 8 16为什么 zend 框架 2 定义像 1 2 4 8 16 这样的整数常量
【发布时间】:2015-11-03 11:04:22
【问题描述】:

例如:

class Boolean extends AbstractFilter
{
    const TYPE_BOOLEAN        = 1;
    const TYPE_INTEGER        = 2;
    const TYPE_FLOAT          = 4;
    const TYPE_STRING         = 8;
    const TYPE_ZERO_STRING    = 16;
    const TYPE_EMPTY_ARRAY    = 32;
    const TYPE_NULL           = 64;
    const TYPE_PHP            = 127;
    const TYPE_FALSE_STRING   = 128;
    const TYPE_LOCALIZED      = 256;
    const TYPE_ALL            = 511;

为什么不定义like 1 2 3 4 5 而定义1 2 4 8 16?

【问题讨论】:

    标签: php zend-framework zend-framework2 constants binary-operators


    【解决方案1】:

    因为您可以对这些数字使用Bitwise 操作。它们中的每一个(二进制)都代表一个,其余的都代表零。因此,您可以在单个字节上操作一系列选项。比如说,如果你加上 1000 + 0100 你会得到 1100 并且信息会被保留。

    同样的逻辑也适用于 json_encode 的第二个参数,比如json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS)

    【讨论】:

      【解决方案2】:

      因为您可以在过滤器中对它们进行 OR:

      TYPE_INTEGER 或 TYPE_FLOAT 查找整数或浮点数

      TYPE_ALL 给出了它:这是所有其他值 OR 在一起。

      【讨论】:

        【解决方案3】:

        你可以找到更多你回答的细节here

        关于您的问题的建议是 why computer science use 1 2 4 8 16 等等..不仅仅是 zend 框架。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-01
          • 1970-01-01
          相关资源
          最近更新 更多