/** * Discover subclass properties to map. Add them to Bitfield. * * @return void * @access protected */ protected function setupBitfield() { $this->bitfield = new Bitfield(); $c = new ReflectionClass($this); $props = $c->getProperties(ReflectionProperty::IS_PROTECTED); foreach ((array) $props as $p) { if ($p->class == __CLASS__) { continue; } $class_name = get_class($this); $constant_name = strtoupper($class_name) . '_' . strtoupper($p->name); $this->bitfield->addOption($constant_name, $unique_check = false); $this->mapped[$p->name] = $constant_name; } }
printf("\n"); } fclose($fp); return; } throw new Exception("Failed to open example.data"); } echo "Writing random data...\n"; generate_data(1000); echo "Reading entries...\n"; read_data_entries(); echo "Done.\n"; exit; // Example of how to use Bitfield directly: $field = new Bitfield(); $field->addOption('USER_IS_ADMIN'); $field->addOption('USER_IS_BANNED'); $field->addOption('USER_IS_ADVERTISER'); $field->addOption('PREF_AUTOLOGIN'); $field->addOption('PREF_SHOW_ADS'); $field->setBitfield(USER_IS_ADMIN | PREF_AUTOLOGIN | PREF_SHOW_ADS); if ($field->isEnabled(USER_IS_ADMIN)) { echo "Hello sir!\n"; if ($field->isEnabled(PREF_AUTOLOGIN)) { echo "Autologin enabled.\n"; } if ($field->isEnabled(USER_IS_ADVERTISER)) { echo "Gimme some offers.\n"; } } else { echo "Meh, what do you want?\n";