1. Go to this page and download the library: Download reinder83/binary-flags library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
reinder83 / binary-flags example snippets
// example classes which the following examples will refer to
use Reinder83\BinaryFlags\BinaryFlags;
use Reinder83\BinaryFlags\Bits;
class ExampleFlags extends BinaryFlags
{
const FOO = Bits::BIT_1;
const BAR = Bits::BIT_2;
const BAZ = Bits::BIT_3;
}
$exampleFlags = new ExampleFlags();
// add BAR flag
$exampleFlags->addFlag(ExampleFlags::BAR);
var_export($exampleFlags->checkFlag(ExampleFlags::FOO));
// false
var_export($exampleFlags->checkFlag(ExampleFlags::BAR));
// true
// remove BAR flag
$exampleFlags->removeFlag(ExampleFlags::BAR);
var_export($exampleFlags->checkFlag(ExampleFlags::BAR));
// false
$exampleFlags = new ExampleFlags();
// add FOO and BAR
$exampleFlags->addFlag(ExampleFlags::FOO | ExampleFlags::BAR);
var_export($exampleFlags->checkFlag(ExampleFlags::FOO));
// true
var_export($exampleFlags->checkFlag(ExampleFlags::FOO | ExampleFlags::BAZ));
// false because BAZ is not set
var_export($exampleFlags->checkFlag(ExampleFlags::FOO | ExampleFlags::BAR));
// true because both flags are set
var_export($exampleFlags->checkFlag(ExampleFlags::FOO | ExampleFlags::BAZ, false));
// true because one of the flags is set (FOO)
// alias of the above method
var_export($exampleFlags->checkAnyFlag(ExampleFlags::FOO | ExampleFlags::BAZ));
// true
$exampleFlags = new ExampleFlags();
$exampleFlags->addFlag(ExampleFlags::FOO | ExampleFlags::BAR | ExampleFlags::BAZ);
var_export($exampleFlags->getFlagNames());
// 'Foo, Bar, Baz'
// null will force current mask
var_export($exampleFlags->getFlagNames(null, true));
/*
array (
0 => 'Foo',
1 => 'Bar',
2 => 'Baz',
)
*/
// get flag names of given mask
var_export($exampleFlags->getFlagNames(ExampleFlags::FOO | ExampleFlags::BAR));
// 'Foo, Bar'
class ExampleFlagsWithNames extends BinaryFlags
{
const FOO = Bits::BIT_1;
const BAR = Bits::BIT_2;
const BAZ = Bits::BIT_3;
public static function getAllFlags()
{
return [
static::FOO => 'My foo description',
static::BAR => 'My bar description',
static::BAZ => 'My baz description',
];
}
}
$exampleFlags = new ExampleFlagsWithNames();
$exampleFlags->addFlag(ExampleFlags::FOO | ExampleFlags::BAR | ExampleFlags::BAZ);
// null will force current mask
var_export($exampleFlags->getFlagNames(null, true));
/*
array (
0 => 'My foo description',
1 => 'My bar description',
2 => 'My baz description',
)
*/
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
private $flagsObject;
/**
* Retrieve flags
* @return ExampleFlags
*/
public function getFlagsAttribute()
{
if ($this->flagsObject === null) {
$this->flagsObject = new ExampleFlags(
$this->attributes['flags'], // set current flags mask
function (ExampleFlags $flags) { // set callback function
// update the flags in this model
$this->setAttribute('flags', $flags->getMask());
}
);
}
return $this->flagsObject;
}
}
// retrieve object from DB
$test = Test::find(1);
// do binary operations on the flags class as described earlier
$test->flags->checkFlag(ExampleFlag::FOO);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.