توسعه دهنده سمت سرور (پیاچپی و لاراول)
چطور از Enums در PHP استفاده کنیم؟

به طور ساده میشه گفت که Enum مجموعهای از مقادیر ثابت هست که از نسخه 8.1 به زبان برنامهنویسی PHP اضافه شده. Enum زمانی کاربرد داره که که مجموعهای از مقادیر به هم مرتبط داریم که باید در یک گروه قرار بگیرند. در تکه کد زیر نمونهای از یک enum مشاهده میکنیم:

همونطور که دیدیم میتونیم داخل enum متد تعریف کنیم و نکته جالبش این هست که enumمیتونه از interfaceها implement کنه.

مقادیر Enum
در صورت نیاز میتونید برای enum مقدار تعیین کنید که به این نوع Backed Enum گفته میشه و لازم هست که براشون type تعریف بشه و همه مقادیر بایستی مقداری از همون type داشته باشند.

مقداری که در Backed Enums تعریف کردیم رو میتونیم به روش پایین بگیریم:
$value = Status::PUBLISHED->value; // 2نام کلید enum رو هم به روش پایین میتونیم بگیریم:
$name= Status::PUBLISHED->name; // publishedمیتونیم باتوجه به مقدار یک enum کلید اون رو بگیریم:
$status = Status::from(2); // Status::PUBLISHEDاگر مقداری که وارد میکنیم در enum وجود نداشته باشه متد from خطا برمیگردونه، همینطور میتونیم از متد tryFrom برای دریافت کلید یک enum از مقدارش استفاده کنیم که در صورت نبود اون مقدار فقط null برمیگردونه.
$status = Status::tryFrom(100); // nullبه کمک متد cases میتونیم تمامی مقادیر موجود در یک enum رو بگیریم.
Status::cases();
/* [
Status::DRAFT,
Status::PUBLISHED,
Status::ARCHIVED
] */چند نکته:
نکته 1: دقت کنید که هر مقدار enum یک object هست در نتیجه نمیتونیم از اونها به عنوان کلیدهای یک آرایه استفاده کنیم.
نکته 2: میتونیم از trait در داخل enum استفاده کنیم و فقط باید دقت کنیم که متدهای پیشفرض enum مثل from یا tryFrom رو حق نداریم override کنیم و trait ما نباید property داشته باشه.
نکته 3: enum های معمولی به طور پیشفرض از interface با نام UnitEnum استفاده میکنند که طبق مستندات PHP متد cases در اون قرار داره.

نکته 4: backed enum ها از interface با نام BackedEnum استفاده میکنند که در اون متدهای from و tryFrom تعریف شده و این interface از unitEnum ارثبری میکنه.

باتوجه به مطالبی که تا الان بررسی کردیم تکه کد پایین میتونه ایده کلی در استفاده از enum بهمون بده.

اگه میخواید از این تکه کد تو پروژه استفاده کنید به این github gist سر بزنید. https://gist.github.com/mhmmdtech/bed2dc8f0d93db33b94d6337241de6bd
تو این مطلب ویژگی enum رو بررسی کردیم و متوجه شدیم که به شدت خوانایی کد رو افزایش میده و احتمال خطا رو کاهش میده. اگر نظر یا سوالی راجع به این مطلب دارید حتما بگید و لطفا این مطلب رو به افرادی که در حال یادگیری PHP هستند معرفی کنید و در آخر ممنونم ازتون بابت وقتی که گذاشتید و این مطلب رو خوندید.
مطلبی دیگر از این انتشارات
به دانشگاه بریم یا نه ؟
مطلبی دیگر از این انتشارات
آموزش بورس برای ذهنهای ماشینی و نه قلبهای احساساتی - قسمت دوم - الگوریتم خرید سهم مناسب
مطلبی دیگر از این انتشارات
راهنمای کامل انتخاب شغل (مهندسی نرم افزار) ۲