Skip to content

Latest commit

 

History

History
70 lines (54 loc) · 2 KB

defaults.md

File metadata and controls

70 lines (54 loc) · 2 KB

Defaults

Mappers already allow you to define a 'default' value. This however require you to create a mapper object. If you don't need mappers, or want a convenient default method, Defaults is your poison.

Usage

use Henzeb\Enumhancer\Concerns\Defaults;
use Henzeb\Enumhancer\Concerns\Makers;

enum YourEnum {
    use Defaults;
    
    case MyEnum;
}

enum YourDefaultEnum {
    use Defaults;
    
    case MyEnum;
    case Default;  
}

enum MyDefaultEnum {
    use Defaults, Makers;
    
    case MyEnum;
    case Default;
    case MyDefaultEnum;
    
    public static function default() : ?self
    {
        return self::MyDefaultEnum;
    }
    
}

examples

YourEnum::default(); //returns null
YourEnum::MyEnum->isDefault(); // returns false
YourEnum::MyEnum->isNotDefault(); // returns true
YourEnum::make('default'); // throws error
YourEnum::tryMake('default'); // returns null

YourDefaultEnum::default(); //returns YourDefaultEnum::Default
YourDefaultEnum::Default->isDefault(); // returns true
YourDefaultEnum::Default->isNotDefault(); // returns false
YourDefaultEnum::make('default'); // YourDefaultEnum::Default
YourDefaultEnum::make('unknown'); // crashes
YourDefaultEnum::tryMake('default'); // returns YourDefaultEnum::Default
YourDefaultEnum::tryMake('unknown'); // returns YourDefaultEnum::Default

MyDefaultEnum::default(); //returns MyDefaultEnum::MyDefaultEnum
MyDefaultEnum::MyDefaultEnum->isDefault(); // returns true
MyDefaultEnum::MyDefaultEnum->isNotDefault(); // returns false
MyDefaultEnum::make('default'); // MyDefaultEnum::MyDefaultEnum
MyDefaultEnum::make('unknown'); // crashes
MyDefaultEnum::tryMake('default'); // returns MyDefaultEnum::MyDefaultEnum
MyDefaultEnum::tryMake('unknown'); // returns MyDefaultEnum::MyDefaultEnum

Note: as From should work exactly like the from and tryFrom on backed enums, this will not work there.

Note: You can also map default using Mappers. The Defaults methods will then use the mapped value.