Почему Zend Framework 2 определяет целочисленные константы, такие как 1 2 4 8 16

Например:

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;

Почему не определить как 1 2 3 4 5 и определить 1 2 4 8 16?

1

Решение

Потому что вы можете использовать побитовое операции над этими номерами. Каждый из них (бинарный говорящий) представляет один, а остальные — нули. Таким образом, вы можете манипулировать рядом параметров в одном байте. Скажем, если вы добавите 1000 + 0100, вы получите 1100, и информация будет сохранена.

Та же логика применяется ко второму параметру json_encode, скажем json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS),

1

Другие решения

Потому что вы можете ИЛИ их в своем фильтре:

TYPE_INTEGER или TYPE_FLOAT находит целые числа или числа с плавающей точкой

TYPE_ALL отдает это: все остальные значения ORed вместе.

0

Вы можете найти более подробную информацию о вашем ответе Вот

предложение по вашему вопросу why computer science use 1 2 4 8 16 и так далее .. не только Zend Framework.

0
По вопросам рекламы [email protected]