Ответ 1
Это означает, что вы комбинируете опции с побитовым оператором OR: |
.
Например:
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
Подробнее о битмаксах: http://en.wikipedia.org/wiki/Mask_(computing)
Попытка понять эту запись в руководстве по php на debug_backtrace
.
Я не понимаю, что они подразумевают под "этот параметр является битовой маской для...."
Я выполнил поиск в Интернете на битмасках, и моя голова крутится вокруг, поэтому я решил, что я действительно не хочу изучать детали об этом, но просто знаю, как я могу добавить варианты этой функции.
Включаю ли я оба параметра, как в
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)
если я хочу оба и один из них, если я хочу только этого?
Это означает, что вы комбинируете опции с побитовым оператором OR: |
.
Например:
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
Подробнее о битмаксах: http://en.wikipedia.org/wiki/Mask_(computing)
Константы будут иметь значения 2 ^ n в десятичной форме, или (10) ^ n в двоичном формате. Например, 1, 10, 100, 1000 и т.д. (В двоичном формате).
Скажите a=001, b=010, c=100
:
Вы можете выполнять побитовое соединение, например, a
и b
. Это будет означать, что каждый бит будет "включен", если один и тот же бит в или b равен 'on'.
a | b == 011
Это битовая маска. Битовая маска проверяется на включение a
на
bitmask & a != 0
Что такое
011 & 001 == 001 != 0
Однако, поскольку c не находится в битовой маске:
bitmask & c == 011 & 100 == 0
Итак, чтобы включить как a, так и b в битовой маске, вы используете двоичный или оператор.
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
Помните, что эти 2 константы (DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS) различаются по значению. Хотя DEBUG_BACKTRACE_PROVIDE_OBJECT предоставляет дополнительный объект, если он присутствует, DEBUG_BACKTRACE_IGNORE_ARGS переносит аргументы, если они присутствуют.
Поскольку наиболее часто используемым прецедентом для этих констант является сокращение использования памяти, способ с наименьшим потреблением памяти:
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
НЕ
// false friend!
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
Он переопределяет значение по умолчанию DEBUG_BACKTRACE_PROVIDE_OBJECT и дополнительно игнорирует DEBUG_BACKTRACE_IGNORE_ARGS.