Пример:
set_error_handler(array($this, 'handleError'), E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE);
что это означает?
Это поразрядный оператор (также называемый «дополнением»). Это биты, установленные в ~ $a это те, которые не установлены в $a .
Тогда
E_ALL & ~E_STRICT & ~E_WARNING & ~E_NOTICE
это биты, установленные в E_ALL и те, которые не установлены в E_STRICT , E_WARNING и E_NOTICE . В основном это говорит о всех ошибках, кроме строгих предупреждений и предупреждений.
Это побитовый оператор . Например, побитовое отрицание числа с двоичным представлением 01011110 будет 10100001 ; каждый бит перевернут в противоположную сторону.
Различие между побитовыми (&, |, ~) и небитовыми (&&, ||,!) Операторами состоит в том, что поразрядные применяются ко всем битам целого числа, в то время как небитовое отношение целого числа рассматривается как единственное «истинное» ( отличное от нуля) или «ложное» (ноль) значение.
Скажем, $flag_1 = 00000001 и $flag_2 = 00000010 . Оба будут «истинными» для $flag_1 && $flag_2 операций, ( $flag_1 && $flag_2 «true»), а результат $flag_1 & $flag_2 будет 00000000, а результат $flag_1 | $flag_2 $flag_1 | $flag_2 будет 00000011. ~$flag_2 будет 11111101, который, когда побитовое-ANDed к текущему результату, очистит эту позицию бита (xxxxxx0x). $flag_2 -ORed к результату выполнения задает эту позицию бита (xxxxxx1x).
См. Поразрядные операторы : это оператор «не» (цитирование) :
~ $a
Биты, которые установлены в$a, не заданы, и наоборот.
Это означает, что на примере, вдохновленном тем, что вы опубликовали, эта часть кода:
var_dump(decbin(E_STRICT)); var_dump(decbin(~E_STRICT));
Вы получите этот результат:
string '100000000000' (length=12) string '11111111111111111111011111111111' (length=32)
(Добавьте пару 0 для заполнения слева от первой строки, и вы увидите, что я имею в виду)
Удаляя отступы со второго выхода, вы получаете:
100000000000 011111111111
Это означает, что оператор ~ дал бит 0 бит для каждого бита, который был равен 1 в intput, и наоборот,
Это not побитовый оператор. Читайте о побитовых операторах здесь: