PHP Classes

File: bitmask_example.php

Recommend this page to a friend!
  Classes of Timm Simpkins   Bitmask Magic   bitmask_example.php   Download  
File: bitmask_example.php
Role: Example script
Content type: text/plain
Description: Example file for bitmask class
Class: Bitmask Magic
Generate bitmasks for storing options.
Author: By
Last change:
Date: 18 years ago
Size: 2,818 bytes
 

Contents

Class file image Download
<?php
require_once('bitmask.class.php');
echo
"<pre>";
// Initiate the bitmask class
$bm = new bitmask;

// Create an array of values
// Notice this is backwards from the binary representation. This is because values are
// inserted from right to left by the nature of bitmasks.
$bitmaskarr = array (0,1,0,0,1,0,0,0,1,1,1,0,1,0,1,1,1);

// Insert the array into the class
$bm->add_element($bitmaskarr);

// Show the mask created from the array
echo $bm->forward_mask . "\n";

// Show the binary representation of the array
echo $bm->bin_mask . "\n";

// This prints the array that was entered. Notice that it is also in reverse order
// from the binary representation.
print_r($bm->mask_array);

// Here we can reset the entire contents by inserting our own bitmask
// this mask represents bits 15, 13, 8, and 4 being set
$bm->reverse_mask('41232');
print_r($bm->mask_array);

// Example of unsetting bit 13
$bm->unset_bit(13);
print_r($bm->mask_array);

// Example of setting bit 6
$bm->set_bit(6);
print_r($bm->mask_array);

$bm->reverse_mask('0'); // reset the object

// Now a more useful example. (for those not familiar with bitmasks)
// We will create an array of items. Lets say someone purchases a lot of widgets
// with various options. We can create a product code from what they choose and
// convert it back and forth and we can always know solely from that code what
// was purchased. (Yes, I know I don't need these keys, they're just for illustration)

$widgets = array( 0 => 'blue',
                 
1 => 'red',
                 
2 => 'yellow',
                 
3 =>'green',
                 
4 => 'purple',
                 
5 => 'small',
                 
6 => 'medium',
                 
7 => 'large',
                 
8 => 'X-large',
                 
9 => 'hard',
                 
10 => 'soft');
                 
// enter the key values for the options
$bm->assoc_keys = $widgets;

// from a form, you find that the person wants a hard green extra large widget.
// so we enter 10,8, and 3 into our bitmask.
$customer_order = array(10,8,3);
foreach (
$customer_order as $option) {
   
$bm->set_bit($option);
}

// Now we have our product code. (1288)
echo $bm->forward_mask;

// If we ever need to convert that product code back to real text, we just have to
// enter it into our class and it gets converted back.
$bm->reverse_mask('1288');

// Get the class to return the options for the widget.
print_r($bm->assoc_get(false));

// One final example. Query an individual bit to see if the option is set.

echo $bm->bit_isset(3)?'true':'false';

// bitmasks can also be used for verification of user priveleges, storing user settings in a
// simple fashion, and various other things. Any time you have a list of things that can either
// be true or false, you just have to pull out a bitmask to make life easy.

echo "</pre>";
?>