//Let me start with an apology for my not-quite-good English
//I think it's easier to use constants, than plain numbers although it's not needed.
//Normally you get an int or string from DB or file and then you create a BitOptions object with something like this:
//$user_options = (true, $read_options);
//in the above line 'true' means "use string instead of int" and $read_optinos is a string that remembers the options in the DB or file.
//Perosnally I use int for DB and string for file.
//IMPORTANT NOTE: If tou want to have more than 32 options, you must use string!!! Otherwise an exception is thrown!
//There is a constant in the class file named BIT_OPTIONS_USE_STRINGS which is used for default value of all fields
//If you want to use int always, set it to false and don't bother passing true/false to the methods if not needed
//The constant BIT_OPTIONS_BOOL_EXCEPTION determines whether an exception should be thrown or not when you pass a not-bool value where a boolean is expected
//If the constant is set to true the next line will throw an exception
//For this example I'll create a new object
$user_options = new BitOptions(true);
//To turn an option on use:
$user_options[USER_ACCESS_CHAT] = true;
//To turn it off use:
$user_options[USER_ACCESS_MODERATE_CHAT] = false;
//To get an array of all options that are turned on use:
$options_array = BitOptions::GetOptions($user_options);
//Lets say $read_options is a string that remembers options and we want to get the options that are turned on
$options_array = BitOptions::GetOptions($read_options, true);
//'true' again means: the options are in string format
//When you have an array ot options like:
$opt_array = array(1,6,2,8,21);
//you can create a BitOptions object by it
$all_user_options = BitOptions::CalculateOptions($opt_array, true);
//the 'true' stands again for 'use strings'
//The __toString() method is implemented so if you want to save the options in db or file you can use the variable itself (not a field)
mysql_query("... $user_options ... ");
//The fields 'options' and 'use_strings' are read only
//Once an object is created, options cannot be edited in any way but with TurnOption method
//Finally, you can loop through the options of an object that are set to true with this:
foreach ($user_options AS $v) echo "$v<br />";