私は楽しみのためにサイトを開発していて、ビット演算子に基づいたディレクトリアクセス制御を実装しようとしています。
私は定義しましたGUEST = 1, GROUP1 = 15 and GROUP2 = 23
比較すると
echo (23 & 1); // print 1
しかし、私が定義するGUEST
と、GROUP1
そしてGROUP2
:
define('GUEST', 1);
define('GROUP1', 15);
define('GROUP2', 23);
// and then
echo (GROUP2 & GUEST); // print 0
echo USER_GUEST.','.USER_ROLES1.','.USER_ROLES2; // print 1,15,23`
問題GROUP1
ありません:
echo (GROUP1 & GUEST); print 1.
どこが間違っているのですか?いくつかの提案?ありがとう。
私は本当に奇妙なことを発見しました。私のGUEST、GROUP1、およびGROUP2は、関数parse_ini_file(self :: $ fileName、true);によって解析するiniファイル内で宣言されています。クラス内。ファイルを解析した後、セクション[DEFINE]で定義されたカップルkey = valueを再帰的に定義します(単純なトリック)。そこでコメントすると、GROUP2 = 23の定義があり、現在のスクリプト(GROUP2&GUEST)内で宣言すると、1が返されます。