Например:
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?
Потому что вы можете использовать побитовые операции над этими числами. Каждый из них (двоичный разговор) представляет собой один, а остальные - как нули. Таким образом, вы можете манипулировать рядом опций в одном байте. Скажем, если вы добавите 1000 + 0100, вы получите 1100, и информация будет сохранена.
Та же логика применяется ко второму паразиторию json_encode, например json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS)
.
вы можете найти более подробную информацию о вас здесь.
предложение о вашем вопросе заключается в том, why computer science use 1 2 4 8 16
и т.д. только для рамки zend.
Потому что вы можете использовать их в своем фильтре:
TYPE_INTEGER или TYPE_FLOAT находит либо целые числа, либо поплавки
TYPE_ALL отдает это: это все остальные значения ORed вместе.