<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مهدی رضایی</title>
        <link>https://virgool.io/feed/@m_12690810</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 09:30:43</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>مهدی رضایی</title>
            <link>https://virgool.io/@m_12690810</link>
        </image>

                    <item>
                <title>استفاده از Enumها در PHP 8.1 و تأثیر آن در طراحی کلین کد</title>
                <link>https://virgool.io/@m_12690810/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-enum%D9%87%D8%A7-%D8%AF%D8%B1-php-81-%D9%88-%D8%AA%D8%A3%D8%AB%DB%8C%D8%B1-%D8%A2%D9%86-%D8%AF%D8%B1-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%DA%A9%D9%84%DB%8C%D9%86-%DA%A9%D8%AF-axy8qivgb4ao</link>
                <description>سال‌ها بود که توسعه‌دهنده‌های PHP برای مدیریت مقادیر ثابت، وضعیت‌ها و نقش‌ها مجبور بودند از constantها یا رشته‌های متنی استفاده کنند. اما با معرفی Enumها در PHP 8.1، این روند تغییر کرد و حالا می‌توانیم با استفاده از یک ویژگی رسمی، کدی تمیزتر، امن‌تر و خواناتر بنویسیم.در این مقاله قصد دارم به شکلی کاربردی نشان بدم که چرا Enumها یک قابلیت &quot;لوکس&quot; نیستند، بلکه برای نوشتن کلین‌کد واقعی در پروژه‌های Laravel و PHP حیاتی‌اند.Enum چیست؟Enum (مخفف &quot;Enumeration&quot;) یک نوع داده‌ای خاص است که اجازه می‌دهد مجموعه‌ای از مقادیر ثابت و تعریف‌شده را داشته باشیم. برخلاف constantهای سنتی، enumها type-safe هستند و IDE به‌راحتی می‌تواند آن‌ها را تشخیص دهد.مثالی ساده:فرض کنید می‌خواهیم وضعیت‌های سفارش را مشخص کنیم. قبل از PHP 8.1:const STATUS_PENDING = &#039;pending&#039;;
const STATUS_APPROVED = &#039;approved&#039;;
const STATUS_REJECTED = &#039;rejected&#039;;اما با Enumها:enum OrderStatus: string {
    case Pending = &#039;pending&#039;;
    case Approved = &#039;approved&#039;;
    case Rejected = &#039;rejected&#039;;
}و از این به بعد در کل پروژه می‌تونی از OrderStatus::Approved استفاده کنی بدون ترس از اشتباه تایپی.مزایای کلیدی Enumها1. امنیت بیشتر (Type Safety)با enumها، PHP مطمئن می‌شود که فقط مقادیر تعریف‌شده استفاده می‌شوند. دیگه خبری از رشته‌های ناقص یا اشتباه نیست.2. خوانایی بالاوقتی کد رو می‌خونی و می‌بینی OrderStatus::Rejected، فوراً متوجه عملکرد اون بخش می‌شی.3. توسعه راحت‌تر با IDEاکثر IDEها (مثل PHPStorm) autocomplete برای enumها دارند و این توسعه رو سریع‌تر و با خطای کمتر می‌کنه.4. امکان افزودن متد و منطقیات داخلی به Enumمی‌تونی داخل enum متد تعریف کنی. مثلاً:enum OrderStatus: string {
    case Pending = &#039;pending&#039;;
    case Approved = &#039;approved&#039;;
    case Rejected = &#039;rejected&#039;;

    public function isFinal(): bool {
        return $this === self::Approved || $this === self::Rejected;
    }
}استفاده از Enum در Laravelیکی از کاربردی‌ترین جاها برای استفاده از enum، مدل‌های Eloquent هست. فرض کن در جدول سفارش‌ها یک فیلد status داریم:use App\Enums\OrderStatus;

protected $casts = [
    &#039;status&#039; =&gt; OrderStatus::class,
];هنگام کار با مدل:$order-&gt;status = OrderStatus::Pending;

if ($order-&gt;status === OrderStatus::Rejected) {
    // do something
}نکات مهم هنگام استفادهEnum ها فقط از PHP 8.1 به بعد در دسترس هستند.اگر از Enum در فرم‌ها یا API استفاده می‌کنی، بهتره مقدار آن را validate کنی (مثلاً با in_array یا Rule custom).Enumها می‌تونن Backed Enum (با مقدار string یا int) یا Pure Enum (بدون مقدار) باشند.</description>
                <category>مهدی رضایی</category>
                <author>مهدی رضایی</author>
                <pubDate>Sat, 28 Jun 2025 18:39:44 +0330</pubDate>
            </item>
            </channel>
</rss>