试图理解 php 手册中的这个条目debug_backtrace
。
我不明白他们所说的“这个参数是......的位掩码”是什么意思
我已经对位掩码进行了网络搜索,我的头在旋转,所以我决定我真的不想了解它的细节,而只是想知道我应该如何将选项添加到该功能。
我是否将两个选项都放入
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)
如果我想要两个和一个,如果我只想要那个?
试图理解 php 手册中的这个条目debug_backtrace
。
我不明白他们所说的“这个参数是......的位掩码”是什么意思
我已经对位掩码进行了网络搜索,我的头在旋转,所以我决定我真的不想了解它的细节,而只是想知道我应该如何将选项添加到该功能。
我是否将两个选项都放入
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 在存在时去除 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。
常量的十进制值为 2^n,二进制值为 (10)^n。例如 - 1、10、100、1000 等(二进制)。
说a=001, b=010, c=100
:
例如,您可以按位或按位进行操作,a
并且b
。这意味着如果 a 或 b 中的同一位“打开”,则每个位都将“打开”。
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);
这意味着您将选项与按位 OR 运算符组合:|
。
例如:
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);
有关位掩码的更多详细信息:http://en.wikipedia.org/wiki/Mask_(computing)