تعزيز PHP Enums باستخدام archtechx/enums
يوليو 1, 2025تعزيز PHP enums باستخدام حزمة archtechx/enums
من PHP 8.1، ظهر نوع جديد اسمه “enums” بيخليك تعرف قيم ثابتة بأسماء مرمّزة زي statuses أو roles. الحزمة دي بتضيف Traits بتقلل الكود المتكرر وتحسّن تجربة الكتابة.
✨ أهم المميزات
- InvokableCases: تقدر تنادي الحالة مباشرة بدون
->value. - Names: تجيب أسماء الحالات في مصفوفة.
- Values: تجيب القيم (لو backed) أو الأسماء (لو pure).
- Options: تجيب مصفوفة case => value.
- From: بتضيف دوال زي
from()،tryFromName()وغيرها. - Metadata: تضيف وصف أو لون لكل حالة.
- Comparable: تقارن الحالات بسهولة بـ
is()،in()وهكذا.
📦 طريقة التثبيت
مطلوب PHP 8.1+. استخدم Composer:
composer require archtechx/enums
🧩 أمثلة عملية
1. InvokableCases
use ArchTech\Enums\InvokableCases;
enum TaskStatus: int {
use InvokableCases;
case INCOMPLETE = 0;
case COMPLETED = 1;
}
TaskStatus::COMPLETED(); // النتيجة: 1
2. Names & Values
use ArchTech\Enums\Names;
use ArchTech\Enums\Values;
enum Role {
use Names, Values;
case ADMIN, USER, GUEST;
}
Role::names(); // ['ADMIN', 'USER', 'GUEST']
Role::values(); // ['ADMIN', 'USER', 'GUEST']
3. Options & stringOptions()
use ArchTech\Enums\Options;
enum TaskStatus: int {
use Options;
case INCOMPLETE = 0;
case COMPLETED = 1;
}
TaskStatus::options();
// ['INCOMPLETE' => 0, 'COMPLETED' => 1]
TaskStatus::stringOptions();
// يرجّع كود HTML جاهز لاستخدامه في
4. From و tryFrom
use ArchTech\Enums\From;
enum Role: string {
use From;
case ADMIN = 'admin';
case USER = 'user';
}
Role::from('admin'); // => Role::ADMIN
Role::tryFrom('unknown'); // => null
Role::fromName('USER'); // => Role::USER
5. Metadata
use ArchTech\Enums\Metadata;
use ArchTech\Enums\Meta\Meta;
use App\Enums\Meta\{Description, Color};
#[Meta(Description::class, Color::class)]
enum TaskStatus: int {
use Metadata;
#[Description('Incomplete')] #[Color('red')]
case INCOMPLETE = 0;
}
TaskStatus::INCOMPLETE->description(); // => 'Incomplete'
6. Comparable
use ArchTech\Enums\Comparable;
enum TaskStatus: int {
use Comparable;
case INCOMPLETE = 0;
case COMPLETED = 1;
}
TaskStatus::INCOMPLETE->is(TaskStatus::INCOMPLETE); // => true
✅ نصائح عملية
- استخدم
InvokableCasesبدل->valueعلشان الكود يبقى أنضف. - استخدم
options()يسهّل إنشاء dropdowns. - استخدم
tryFrom()علشان تتعامل بأمان مع مدخلات المستخدم. - نظم Enums في فولدر
app/Enums
- لو شغال على Laravel.
الحزمة دي بتخلي الـ Enums في PHP أقوى وأسهل في الاستخدام، خصوصًا في Laravel، APIs، والفورمز.
المدونة
يوليو 20, 2025
في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل ع...
يونيو 30, 2025
📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...
يوليو 30, 2025
لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...
فبراير 05, 2026
شرح تحديث Redux Toolkit 2.9.0 إصدار Redux Toolkit 2.9.0 ركّز بشكل أساسي على تحسين أداء RTK Query، وتنظيم طريقة التعامل مع الطلبات غير المتزامنة (...
يوليو 01, 2025
مكونات واجهة المستخدم والتفاعل الأساسية في React Native React Native بتوفرلك مجموعة قوية من المكونات الجاهزة اللي تقدر تستخدمها لبناء تطبيقات موباي...
يونيو 17, 2025
React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...