Skip to content

Instantly share code, notes, and snippets.

@Alan01252
Created June 19, 2012 19:02
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Alan01252/2955913 to your computer and use it in GitHub Desktop.
Save Alan01252/2955913 to your computer and use it in GitHub Desktop.
PHP Bitmasks
<?php
//Define our bitmask
define("allowEverythingBitmask",1); //In binary 0001
//Our user
class User {
private $permissionBitmask = 1; //In binary 0001
public function setPermissionBitmask($bitmask)
{
$this->permissionBitmask = $bitmask;
}
public function getPermissionBitmask()
{
return $this->permissionBitmask;
}
}
$user = new User;
//Test if user can do everything
if((allowEverythingBitmask & $user->getPermissionBitmask()))
{
echo "I can do everything!";
}
define("allowViewBitMask",1); //In binary 0001
define("allowEditBitMask",2); //In binary 0010
define("allowCreateBitMask",4); //In binary 0100
define("allowDeleteBitMask",8); //In binary 1000
$user2 = new User();
$user2->setPermissionBitmask(allowViewBitMask | allowEditBitMask);
if((allowViewBitMask & $user2->getPermissionBitmask()))
{
echo "I can view!";
}
if((allowEditBitMask & $user2->getPermissionBitmask()))
{
echo "I can edit!";
}
else
{
echo "I can't edit :( ";
}
$user3 = new User();
$user3->setPermissionBitmask(allowViewBitMask);
if((allowViewBitMask & $user3->getPermissionBitmask()))
{
echo "I can view!";
}
if((allowEditBitMask & $user3->getPermissionBitmask()))
{
echo "I can edit!";
}
else
{
echo "I can't edit :( ";
}
if((allowCreateBitMask & $user->getPermissionBitmask()))
{
echo "I can create!";
}
else
{
echo "I can't create :( ";
}
$userPermissions = $user->getPermissionBitMask();
$userPermissions |= allowCreateBitMask;
$user->setPermissionBitMask($userPermissions);
if((allowCreateBitMask & $user->getPermissionBitmask()))
{
echo "I can create!";
}
$userPermissions |= allowCreateBitMask;
$user ->setPermissionBitMask(allowViewBitMask | allowEditBitMask | allowCreateBitMask | allowDeleteBitMask );
checkPermissions($user);
$userPermissions = $user->getPermissionBitMask();
$userPermissions ^= allowCreateBitMask;
$user->setPermissionBitMask($userPermissions);
checkPermissions($user);
function checkPermissions($user) {
if((allowViewBitMask & $user->getPermissionBitmask()))
{
echo "I can view!";
}
else
{
echo "I can't view :( ";
}
if((allowEditBitMask & $user->getPermissionBitmask()))
{
echo "I can edit!";
}
else
{
echo "I can't edit :( ";
}
if((allowCreateBitMask & $user->getPermissionBitmask()))
{
echo "I can create!";
}
else
{
echo "I can't create :( ";
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment