Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public function getFlag($idBit){
return $this->flags & (1 << $idBit);
}
const FLAG_LAYOUT_LEFT=1;
const FLAG_LAYOUT_RIGHT=2;
const FLAG_LAYOUT_TOP=4;
const FLAG_LAYOUT_BOTTOM=8;
const FLAG_LAYOUT_LEFT_AND_RIGHT = 3;
const FLAG_LAYOUT_TOP_AND_BOTTOM = 12;
const FLAG_LAYOUT_ALL = 15;
$this->flags |= self::FLAG_LAYOUT_ALL;
$this->flags ^= self::FLAG_LAYOUT_LEFT;
$this->flags ^= self::FLAG_LAYOUT_RIGHT;
($this->flags & self::FLAG_LAYOUT_TOP) === self::FLAG_LAYOUT_TOP;
($this->flags & self::FLAG_LAYOUT_LEFT) === self::FLAG_LAYOUT_LEFT;
define('FLAG_CIRCULAR', 128);
define('FLAG_PUBLIC', 256);
class some
{
const FLAG_BLOCKED = 1;
const FLAG_BIG = 2;
const FLAG_LAST = 4;
const FLAG_BEST = 8;
const FLAG_COLORED = 16;
const FLAG_PREMIUM = 32;
const FLAG_WITH_SOUND = 64;
public $flags = self::FLAG_BLOCKED;
}
$lang_array = array(1 => 'заблокирована', 2 => 'большая', 4 => 'последняя',
8 => 'лучшая', 16 => 'цветная', 32 => 'высшего качества', 64 => 'со звуком',
128 => 'круглая', 256 => 'общедоступная');
$some = new some();
$some->flags ^= some::FLAG_BLOCKED; //не заблокирована
$some->flags |= some::FLAG_LAST; //эта вещь последняя
$some->flags |= some::FLAG_COLORED; //цветная
$some->flags |= some::FLAG_PREMIUM; //высшего качества
$some->flags |= some::FLAG_WITH_SOUND; //и со звуком
$some->flags |= FLAG_CIRCULAR; //так же она круглая
$some->flags |= 512; //ещё какой-то флаг
echo 'Эта вещь: ';
foreach ($lang_array as $key => $title)
if (($some->flags & $key) === $key)
echo '
'.$title;
echo '
Заблокирована? ';
echo (($some->flags & some::FLAG_BLOCKED) === some::FLAG_BLOCKED)? 'Да':'Нет';
echo '
Установлен ли флаг, который заранее не определён? ';
echo (($some->flags & 512) === 512)? 'Да':'Нет';
Работа с битовой маской