Created
June 19, 2012 19:02
-
-
Save Alan01252/2955913 to your computer and use it in GitHub Desktop.
PHP Bitmasks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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