%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/spatie/enum/docs/usage/ |
| Current File : /home/graphicd/public_html/vebto/vendor/spatie/enum/docs/usage/enum-setup.md |
---
title: Enum Setup
weight: 1
---
## Basic Enum
The most basic setup to define an enum by using php-doc annotations.
```php
use Spatie\Enum\Enum;
/**
* @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()
*
* @method static bool isMonday(int|string $value = null)
* @method static bool isTuesday(int|string $value = null)
* @method static bool isWednesday(int|string $value = null)
* @method static bool isThursday(int|string $value = null)
* @method static bool isFriday(int|string $value = null)
* @method static bool isSaturday(int|string $value = null)
* @method static bool isSunday(int|string $value = null)
*/
final class WeekDayEnum extends Enum
{
}
```
## Custom value/index Enum
> This enum will be used in following chapters.
### by Constants
This is the easiest way to change the value/index by it's enum name. The key of both arrays is the name of the method it's accessed by and the value MUST be a `string` for the value map and an `int` for the index map.
```php
use Spatie\Enum\Enum;
/**
* @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()
*
* @method static bool isMonday(int|string $value = null)
* @method static bool isTuesday(int|string $value = null)
* @method static bool isWednesday(int|string $value = null)
* @method static bool isThursday(int|string $value = null)
* @method static bool isFriday(int|string $value = null)
* @method static bool isSaturday(int|string $value = null)
* @method static bool isSunday(int|string $value = null)
*/
final class WeekDayEnum extends Enum
{
const MAP_INDEX = [
'monday' => 1,
'tuesday' => 2,
'wednesday' => 3,
'thursday' => 4,
'friday' => 5,
'saturday' => 6,
'sunday' => 7,
];
const MAP_VALUE = [
'monday' => 'Montag',
'tuesday' => 'Dienstag',
'wednesday' => 'Mittwoch',
'thursday' => 'Donnerstag',
'friday' => 'Freitag',
'saturday' => 'Samstag',
'sunday' => 'Sonntag',
];
}
```
### by Methods
This approach offers much more flexibility because you can use the return value of a function for the value/index resolving. Keep in mind that these methods are called once for the enum cache (used to make an enum) but called everytime you access the value/index via the getters.
So if you use, for example, `time()` for the index you can only make the enum by the timestamp the enum was first cached but you will get the current timestamp if you call `getIndex()`.
```php
use Spatie\Enum\Enum;
/**
* @method static bool isMonday(int|string $value = null)
* @method static bool isTuesday(int|string $value = null)
* @method static bool isWednesday(int|string $value = null)
* @method static bool isThursday(int|string $value = null)
* @method static bool isFriday(int|string $value = null)
* @method static bool isSaturday(int|string $value = null)
* @method static bool isSunday(int|string $value = null)
*/
abstract class WeekDayEnum extends Enum
{
public static function monday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 1;
}
public function getValue(): string
{
return 'Montag';
}
};
}
public static function tuesday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 2;
}
public function getValue(): string
{
return 'Dienstag';
}
};
}
public static function wednesday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 3;
}
public function getValue(): string
{
return 'Mittwoch';
}
};
}
public static function thursday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 4;
}
public function getValue(): string
{
return 'Donnerstag';
}
};
}
public static function friday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 5;
}
public function getValue(): string
{
return 'Freitag';
}
};
}
public static function saturday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 6;
}
public function getValue(): string
{
return 'Samstag';
}
};
}
public static function sunday(): WeekDayEnum
{
return new class() extends WeekDayEnum {
public function getIndex(): int
{
return 7;
}
public function getValue(): string
{
return 'Sonntag';
}
};
}
}
```