باكدجات درس تعليمي

إتقان Laravel Pennant: استخدام أعلام الميزات لتطبيقات ديناميكية

Admin User
Admin User
Apr 28, 2026
2 دقيقة قراءة

Key Takeaways

  • # إتقان Laravel Pennant: استخدام أعلام الميزات لتطبيقات ديناميكية
  • Laravel Pennant هي حزمة قوية ومن الطرف الأول تُضيف إمكانيات أعلام الميزات (Feature Flags) إلى...

إتقان Laravel Pennant: استخدام أعلام الميزات لتطبيقات ديناميكية

Laravel Pennant هي حزمة قوية ومن الطرف الأول تُضيف إمكانيات أعلام الميزات (Feature Flags) إلى تطبيقات Laravel الخاصة بك. أعلام الميزات (المعروفة أيضًا باسم Feature Toggles) هي تقنية لتطوير البرمجيات تسمح لك بتشغيل أو إيقاف الميزات أثناء وقت التشغيل دون الحاجة إلى نشر كود جديد. وهذا يوفر مرونة هائلة لاختبار A/B، وعمليات الطرح التدريجي، والوصول إلى الميزات المميزة، وغير ذلك الكثير.

في هذا الدرس التقني المفصل، سنتعمق في Laravel Pennant، ونغطي كل شيء من التثبيت إلى سيناريوهات الاستخدام المتقدمة.

ما هي أعلام الميزات ولماذا تستخدم Pennant؟ #

تخيل أنك تقوم بتطوير ميزة تجريبية جديدة. بدلاً من نشرها لجميع المستخدمين دفعة واحدة، قد ترغب في:

  • الطرح التدريجي: إصدار الميزة لنسبة صغيرة من المستخدمين أولاً، ثم زيادتها تدريجيًا. هذا يقلل من المخاطر.
  • اختبار A/B: عرض إصدارات مختلفة من الميزة لقطاعات مختلفة من المستخدمين لجمع البيانات حول الأداء وتجربة المستخدم.
  • الميزات المميزة: تمكين ميزات معينة فقط للمشتركين المدفوعين أو المستخدمين ذوي الأدوار المحددة.
  • مفاتيح الإيقاف الفوري (Kill Switches): تعطيل ميزة بها خطأ في الإنتاج بسرعة دون الحاجة إلى التراجع عن الكود.
  • وضع الصيانة: وضع أجزاء معينة من تطبيقك في وضع الصيانة.

يُبسط Laravel Pennant تنفيذ هذه السيناريوهات من خلال توفير واجهة برمجة تطبيقات أنيقة ومتمحورة حول Laravel لتعريف أعلام الميزات والتحقق منها وإدارتها.

التثبيت #

البدء باستخدام Laravel Pennant مباشر. يمكنك تثبيته عبر Composer:

composer require laravel/pennant

بعد التثبيت، يجب عليك نشر ملف تكوين Pennant وتشغيل ترحيل قاعدة البيانات (migrations). ستنشئ عمليات الترحيل جدول features، والذي يستخدمه Pennant لتخزين حالة الميزات لنطاقات (scopes) محددة (مثل: المستخدمين، الفرق).

php artisan vendor:publish --tag="pennant-config"
php artisan migrate

تعريف الميزات #

يتم تعريف الميزات باستخدام الطريقة Feature::define()، وعادةً ما يكون ذلك داخل طريقة boot في AppServiceProvider الخاص بك أو في مزود خدمة مخصص مثل FeatureServiceProvider.

تقبل طريقة define اسم الميزة (سلسلة نصية) ودالة استدعاء (callable) تحدد ما إذا كانت الميزة نشطة. تتلقى الدالة المستدعاة

FAQs

ما هو الغرض الرئيسي من Laravel Pennant؟
يوفر Laravel Pennant طريقة أنيقة لتطبيق أعلام الميزات (feature toggles) في تطبيقات Laravel الخاصة بك، مما يتيح لك تشغيل الميزات أو إيقافها ديناميكيًا دون نشر الكود. يتم استخدامه لاختبار A/B، والطرح التدريجي، والميزات المميزة، وغير ذلك.
كيف يمكنني تفعيل ميزة لمستخدم معين؟
يمكنك تفعيل ميزة لمستخدم معين (أو أي نموذج Eloquent يعمل كـ 'scope') باستخدام `Feature::activateFor($user, 'feature-name')` أو `Feature::for($user)->activate('feature-name')`. وبالمثل، يمكنك تعطيلها باستخدام `deactivateFor` أو `deactivate`.
هل يمكنني استخدام Pennant لاختبار A/B؟
نعم، يعتبر Laravel Pennant ممتازًا لاختبار A/B. يمكنك تعريف ميزة بدالة استدعاء (callable) تستخدم تعيينًا عشوائيًا (مثل `Lottery::odds`) أو دالة تجزئة متسقة بناءً على معرّف المستخدم لتوجيه قطاعات مختلفة من المستخدمين إلى تجارب ميزات مختلفة.
ما الفرق بين `Feature::define` و `Feature::activateFor`؟
تسجل `Feature::define` ميزة وتحدد المنطق الافتراضي (دالة استدعاء) لتحديد ما إذا كانت نشطة. تحدد `Feature::activateFor` (أو `deactivateFor`) صراحة حالة الميزة لـ *نطاق معين* (مثل المستخدم) في قاعدة البيانات، مما قد يتجاوز منطق دالة الاستدعاء المعرفة بواسطة `define` لهذا النطاق.

Want more content like this?

Explore more tutorials in the باكدجات section.

Explore باكدجات

You might also like