Rýchly štart
Pridajte trait RoundlyConsulting\Enums\Helpers do ľubovoľného enumu. Backed enumy (s reťazcovými alebo celočíselnými hodnotami) dostanú všetky metódy:
namespace App\Enums;
use RoundlyConsulting\Enums\Helpers;
enum NewsCategory: string
{
use Helpers;
case HotNews = 'hot-news';
case RegularNews = 'regular-news';
case PrivateNews = 'private-news';
}Všetky pomocné metódy sú odteraz dostupné na enume aj na jeho prípadoch:
NewsCategory::HotNews->label(); // "Hot News"
NewsCategory::values(); // ['hot-news', 'regular-news', 'private-news']
NewsCategory::toOptions(); // ['hot-news' => 'Hot News', 'regular-news' => 'Regular News', ...]
NewsCategory::options(); // Collection<EnumOption> for JS selects
NewsCategory::fromName('HotNews'); // NewsCategory::HotNews
NewsCategory::tryFromLabel('Nope'); // null
NewsCategory::validationRule(); // 'in:hot-news,regular-news,private-news'
NewsCategory::random(); // a random case
NewsCategory::count(); // 3
NewsCategory::HotNews->isIn([NewsCategory::HotNews, NewsCategory::RegularNews]); // trueMetódy vracajúce kolekcie — names(), values(), labels(), toOptions() a ďalšie — vracajú inštancie Illuminate\Support\Collection; komentáre pre prehľadnosť zobrazujú ich obsah ako pole.
S Eloquentom
Trait sa bez problémov kombinuje s natívnym enum castom Laravelu, takže atribút modelu dostanete ako prípad enumu so všetkými pomocnými metódami:
use App\Enums\NewsCategory;
use Illuminate\Database\Eloquent\Model;
final class Article extends Model
{
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'category' => NewsCategory::class,
];
}
}
$article->category->label(); // "Hot News"
$article->category->is(NewsCategory::PrivateNews); // falsePrejavte 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.