18

のphpマニュアルでこのエントリを理解しようとしていdebug_backtraceます。

「このパラメーターは...のビットマスクです」の意味がわかりません。

私はビットマスクで Web 検索を行いましたが、頭がぐるぐる回っているので、詳細を知りたくはなく、その機能にオプションを追加する方法を知りたいだけだと決めました。

次のように両方のオプションを入れますか

debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS)

両方が必要な場合と、その一方だけが必要な場合はどうすればよいですか?

4

3 に答える 3

18

これら 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 を無視します。

于 2013-05-22T10:21:55.610 に答える
13

定数の値は、10 進数で 2^n、2 進数で (10)^n になります。たとえば、1、10、100、1000 など (バイナリ)。

言うa=001, b=010, c=100:

たとえば、ビット単位または on を実行でき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);
于 2012-06-30T19:20:48.953 に答える
11

これは、オプションをビットごとの OR 演算子で結合することを意味します: |.

例えば:

 debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS);

ビットマスクの詳細については、http: //en.wikipedia.org/wiki/Mask_(computing)を参照してください。

于 2012-06-30T19:10:37.747 に答える