تعزيز 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، والفورمز.

المدونة

كيف تجعل موقعك "سريع جداً" خطوة بخطوة

يوليو 30, 2025

لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...

إتقان التحقق الشرطي في Laravel 12

يوليو 07, 2025

إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...

إزاي تستخدم Web Components ببساطة وذكاء

يوليو 06, 2025

إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...

React Native 0.80 وExecuTorch: بداية قوية للذكاء الاصطناعي المحلي في تطبيقات الموبايل

يوليو 28, 2025

🚀 الجديد في React Native 0.80 بالتفصيل الإصدار React Native 0.80 يعتبر نقطة تحول حقيقية في عالم تطوير تطبيقات الموبايل باستخدام React Native. التح...

نظرة معمقة على Laravel Context: تسجيل وتحليل السياق البرمجي باحترافية

يوليو 20, 2025

في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل ع...

استكشف أقوى تقنيات Laravel الحديثة: Inertia.js، View Creators، وHLS خطوة بخطوة

يوليو 27, 2025

أدوات قوية تقدر تستخدمها لتطوير تطبيقات Laravel بشكل احترافي: Inertia.js v2، وView Creators، وحزمة Laravel HLS لبث الفيديوهات بأمان. ١. Inertia.j...

The Ultimate Managed Hosting Platform