Backed a čisté enumy
Trait Helpers je navrhnutý pre backed enumy, no všetky metódy fungujú aj na čistých (pure) enumoch bez hodnôt: všade, kde by sa čítala hodnota — values(), storable(), hasValue(), validationRule(), toOptions(), options() a readable() — sa namiesto nej použije názov prípadu.
use RoundlyConsulting\Enums\Helpers;
enum Status
{
use Helpers;
case Active;
case Archived;
}
Status::Active->readable(); // "Active"
Status::labels()->all(); // ['Active', 'Archived']
Status::values()->all(); // ['Active', 'Archived'] — the names stand in for values
Status::toOptions(); // ['Active' => 'Active', 'Archived' => 'Archived']
Status::options()->first()->value; // 'Active'
Status::validationRule(); // 'in:Active,Archived'
Status::hasValue('Active'); // true
Status::fromLabel('Archived'); // Status::Archived
Status::count(); // 2Správanie podľa typu enumu
| Metóda | Backed enum | Čistý enum |
|---|---|---|
readable(), label(), labels() | Str::headline() hodnoty | Str::headline() názvu prípadu |
toOptions(), toArray() | Kľúčom je hodnota | Kľúčom je názov prípadu |
options() | value = hodnota | value = názov prípadu |
names(), collect(), count(), random() | Rovnaké | Rovnaké |
fromName(), tryFromName(), hasName() | Rovnaké | Rovnaké |
fromLabel(), tryFromLabel() | Porovnáva s readable() | Porovnáva s readable() |
is(), isNot(), isIn(), isNotIn(), whenIs*() | Rovnaké | Rovnaké |
values(), storable() | Hodnoty backed enumu | Názvy prípadov |
validationRule() | Pravidlo in: z hodnôt backed enumu | Pravidlo in: z názvov prípadov |
hasValue() | Striktná zhoda s hodnotou | Striktná zhoda s názvom prípadu |
Na čistom enume teda values() a storable() vrátia názvy prípadov, validationRule() prijme presne tieto názvy a hasValue() porovnáva striktne s názvom.
Celočíselné enumy
use RoundlyConsulting\Enums\Helpers;
enum Priority: int
{
use Helpers;
case Low = 0;
case Medium = 5;
case High = 10;
}
Priority::values(); // [0, 5, 10]
Priority::validationRule(); // 'in:0,5,10'
Priority::hasValue(5); // true
Priority::hasValue('5'); // false — strict comparison
Priority::Medium->readable(); // "5"
Priority::toOptions(); // [0 => '', 5 => '5', 10 => '10']hasValue() porovnáva striktne, takže celočíselnému enumu odovzdajte int — vstup z formulára prichádza ako reťazec. validationRule() funguje tak či tak, pretože pravidlo in v Laraveli porovnáva reťazce. Popisy vznikajú z hodnoty, takže čísla zostanú číslami (5 → „5“) a z hodnoty 0 dokonca vznikne prázdny popis — celočíselným enumom preto dajte skutočné popisy prepísaním readable(), ako ukazuje časť Preklad popisov.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.