Простая помощь в маскировке

У меня есть следующие флаги:

- edit profile => 1
- update coupon => 2
- update news articles => 4

Я хочу понять, как я могу установить и проверить битовую маску для всех трех флагов (то есть, у пользователя есть доступ ко всем 3-битным маскам).

  • Мы добавляем все биты вместе?
  • Как насчет просто иметь доступ к 2?

Не совсем уверен, что здесь делать.

2

Решение

Если вы хотите, чтобы у пользователя были все разрешения, тогда or биты.

например

$permission_bitmask = $edit_profile | $update_coupon | $update_news_articles;

Только для двух разрешений это одна и та же идея.

$permission_bitmask = $edit_profile | $update_coupon;

Чтобы проверить битовую маску и битовую маску с нужным вам битом.

$has_edit_profile = ($edit_profile & $permission_bitmask) !== 0;
2

Другие решения

Других решений пока нет …