1. Go to this page and download the library: Download eclipxe/enum 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/ */
eclipxe / enum example snippets
/**
* This is a common use case enum sample
* source: tests/Fixtures/Stages.php
*
* @method static self created()
* @method static self published()
* @method static self reviewed()
* @method static self purged()
*
* @method bool isCreated()
* @method bool isPublished()
* @method bool isReviewed()
* @method bool isPurged()
*/
final class Stages extends Eclipxe\Enum\Enum
{
}
use Eclipxe\Enum\Tests\Fixtures\Stages;
// create from value
$purged = new Stages('purged');
// create from index
$purged = new Stages(3);
// create from an object that can be converted to string and contains the value
$other = new Stages($purged);
// create from static method
$purged = Stages::purged();
// create from static method is not case-sensitive as methods are not
$purged = Stages::{'PURGED'}();
// throws a BadMethodCallException because foobar is not part of the enum
$purged = Stages::{'FOOBAR'}();
use Eclipxe\Enum\Tests\Fixtures\Stages;
$stage = Stages::purged();
$stage->isPurged(); // true
$stage->isPublished(); // false
$stage->{'isSomethingElse'}(); // false, even when SomethingElse is not defined
$stage->{'SomethingElse'}(); // throw BadMethodCallException
use Eclipxe\Enum\Tests\Fixtures\Stages;
$stage = Stages::purged();
var_export($stage === Stages::purged()); // false, is not the same identity
var_export($stage == Stages::purged()); // true
var_export($stage == Stages::published()); // false
var_export($stage->value() === Stages::purged()->value()); // true (compare using value)
var_export($stage->index() === Stages::purged()->index()); // true (compare using index)
/**
* This is an enum case where names and values are overridden
*
* @method static self monday()
* @method static self tuesday()
* @method static self wednesday()
* @method static self thursday()
* @method static self friday()
* @method static self saturday()
* @method static self sunday()
*/
final class WeekDays extends \Eclipxe\Enum\Enum
{
protected static function overrideValues(): array
{
return [
'monday' => 'Monday',
'tuesday' => 'Tuesday',
'wednesday' => 'Wednesday',
'thursday' => 'Thursday',
'friday' => 'Friday',
'saturday' => 'Saturday',
'sunday' => 'Sunday',
];
}
protected static function overrideIndices(): array
{
return [
'monday' => 1,
];
}
}