تعزيز 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، والفورمز.
المدونة
إزاي تستخدم Web Components ببساطة وذكاء
يوليو 06, 2025
إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...
مقارنة CSS: طبقات vs BEM vs Utility Classes
يونيو 26, 2025
مقارنة CSS: Cascade Layers و BEM و Utility Classes المقالة بتتكلّم عن ٣ طرق لإدارة الـ specificity في CSS – BEM والـ utility‑first classes وك...
هل لارافيل بطيء؟ تحسين أداء الاستعلامات والفهارس بأمثلة
يوليو 20, 2025
دليل عملي ومفصل مع أمثلة واقعية وعينات كود تسهّل عليك تفادي بطء Laravel وتحافظ على سرعة التطبيق. 1. 🧠 استدعي اللي محتاجه بس لو بتعمل DB::tabl...
React Labs: View Transitions وActivity
يونيو 17, 2025
React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...
نظام طوابير Laravel واستخدام Supervisor في الإنتاج
يوليو 01, 2025
🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...
لارافيل 12: كل جديد من 12.0 لـ 12.19 – دليل شامل
يوليو 20, 2025
🔧 1. لارافيل 12.0 – ستارتر كيتس وتعديلات أساسية إصدار 12.0 جاب Starter Kits جاهزة للـ React، Vue، Livewire، وكمان دمج مع WorkOS AuthKit،...
