الموقع حالياً تحت التطوير (Beta) 🚀. قد تلاحظ بعض التغييرات أو مميزات قيد العمل.
دروس درس تعليمي

تطبيق أعلام الميزات البسيطة في Laravel باستخدام حزمة Laravel Toggle

Admin User
Admin User
May 23, 2026
5 دقيقة قراءة

Key Takeaways

  • تُعد أعلام الميزات (Feature Flags)، المعروفة أيضًا باسم مفاتيح الميزات (Feature Toggles)، تقنية قوية في تطوير البرمجيات الحديث. تتيح لك تشغيل أو إيقاف تشغيل ميز...

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

تُمكّنك حزمة Laravel Toggle من التحكم في أعلام الميزات الخاصة بك بشكل شامل، إما من خلال متغيرات البيئة أو قاعدة البيانات، أو مزيج من الاثنين معًا. في هذا الدليل التعليمي، سنتناول كيفية تثبيت، وتكوين، واستخدام Laravel Toggle لإدارة ميزات تطبيقك.

1. التثبيت #

البدء باستخدام Laravel Toggle أمر بسيط. أولاً، تحتاج إلى إضافة الحزمة إلى مشروع Laravel الخاص بك باستخدام Composer:

composer require protonemedia/laravel-toggle

بعد التثبيت، ستحتاج إلى نشر ملف التكوين الخاص بالحزمة. يتيح لك هذا تخصيص طريقة عمل Laravel Toggle:

php artisan vendor:publish --provider="Protonemedia\LaravelToggle\ToggleServiceProvider" --tag="toggle-config"

إذا كنت تخطط لإدارة أعلام الميزات الخاصة بك عبر قاعدة البيانات (وهو ما يُوصى به غالبًا للتحكم الديناميكي)، فستحتاج أيضًا إلى تشغيل الهجرات (migrations) لإنشاء جدول toggle:

php artisan migrate

2. التكوين (config/toggle.php) #

يمنحك ملف التكوين toggle.php المنشور التحكم في كيفية عمل الحزمة:

// config/toggle.php
return [
    'environment_variables' => env('TOGGLE_ENVIRONMENT_VARIABLES', true),
    'database_table' => 'toggle',
    'cache_key' => 'laravel-toggle.features',
    'cache_ttl' => env('TOGGLE_CACHE_TTL', 3600),
];
  • environment_variables: اضبط هذا على true إذا كنت تريد أن تتحقق Laravel Toggle من الأعلام المعرفة في ملف .env الخاص بك. ستبحث الحزمة عن متغيرات تبدأ بـ TOGGLE_ (على سبيل المثال، TOGGLE_NEW_FEATURE).
  • database_table: اسم جدول قاعدة البيانات حيث سيتم تخزين أعلام الميزات (الافتراضي هو toggle).
  • cache_key و cache_ttl: تتحكم هذه الإعدادات في سلوك التخزين المؤقت للأعلام المدارة بواسطة قاعدة البيانات. يساعد التخزين المؤقت في تحسين الأداء عن طريق تقليل استعلامات قاعدة البيانات.

3. إدارة أعلام الميزات #

توفر حزمة Laravel Toggle مرونة في كيفية تعريف وإدارة أعلامك.

عبر متغيرات البيئة #

هذه هي أبسط طريقة للبدء. ما عليك سوى إضافة متغير مسبوق بـ TOGGLE_ إلى ملف .env الخاص بك:

TOGGLE_NEW_DASHBOARD=true TOGGLE_EXPERIMENTAL_LOGIN=false

  • اضبطه على true لتمكين الميزة.
  • اضبطه على false لتعطيل الميزة.

الأعلام المعرفة بهذه الطريقة سريعة التنفيذ ولكنها تتطلب تغييرًا في ملف .env الخاص بك (وربما نشرًا) لتحديثها في بيئة الإنتاج.

عبر قاعدة البيانات #

للسيطرة الأكثر ديناميكية، خاصة في بيئات الإنتاج حيث لا ترغب في إعادة النشر لتغيير علم، فإن استخدام قاعدة البيانات مثالي. توفر Laravel Toggle أوامر Artisan مريحة لذلك.

  • عرض جميع الأعلام: php artisan toggle:list

  • تمكين ميزة: php artisan toggle:set new-dashboard --on

  • تعطيل ميزة: php artisan toggle:set new-dashboard --off

  • إزالة علم ميزة من قاعدة البيانات: php artisan toggle:forget new-dashboard

عند استخدام قاعدة البيانات، تقوم Laravel Toggle تلقائيًا بإنشاء جدول toggle يحتوي على أعمدة name (سلسلة نصية) و active (قيمة منطقية).

4. استخدام أعلام الميزات في تطبيقك #

بمجرد تعريف أعلامك، يمكنك بسهولة التحقق من حالتها داخل تطبيق Laravel الخاص بك باستخدام واجهة Toggle أو توجيهات Blade.

استخدام واجهة Toggle (Facade) #

يمكنك استخدام واجهة Toggle في المتحكمات (controllers)، الخدمات (services)، أو أي جزء آخر من تعليمات PHP البرمجية للتحقق من حالة علم ميزة.

use Protonemedia\LaravelToggle\Facades\Toggle;

class DashboardController extends Controller
{
    public function index()
    {
        if (Toggle::active('new-dashboard')) {
            // عرض نسخة لوحة التحكم الجديدة
            return view('dashboard.new');
        } else {
            // عرض نسخة لوحة التحكم القديمة
            return view('dashboard.old');
        }
    }

    public function analytics()
    {
        if (Toggle::inactive('experimental-login')) {
            // عرض التحليلات فقط إذا كان تسجيل الدخول التجريبي مُعطلاً
            return view('dashboard.analytics');
        }
        abort(403, 'Experimental login active, analytics temporarily disabled.');
    }
}
  • Toggle::active('feature-name'): يُرجع true إذا كانت الميزة نشطة، false بخلاف ذلك.
  • Toggle::inactive('feature-name'): يُرجع true إذا كانت الميزة غير نشطة، false بخلاف ذلك.

استخدام توجيهات Blade (Blade Directives) #

للعرض الشرطي في قوالب Blade الخاصة بك، توفر Laravel Toggle توجيه @toggle مريحًا.

<!-- resources/views/layouts/app.blade.php -->

@toggle('new-search-bar')
    <div class="new-search-bar">
        <!-- تنفيذ شريط البحث الجديد -->
        <input type="text" placeholder="ابحث بطريقة جديدة...">
    </div>
@else
    <div class="old-search-bar">
        <!-- تنفيذ شريط البحث القديم -->
        <input type="text" placeholder="ابحث بالطريقة القديمة...">
    </div>
@endtoggle

@toggle('beta-banner')
    <div class="alert alert-warning">
        هذه ميزة تجريبية! تقدم بحذر.
    </div>
@endtoggle

التوجيه الشرطي أو Middleware #

يمكنك أيضًا استخدام Toggle::active() ضمن تعريفات مساراتك (routes) أو Middleware المخصص لتقييد الوصول إلى مسارات معينة أو أقسام كاملة من تطبيقك بناءً على علم الميزة.

// routes/web.php

// تقييد مجموعة مسارات كاملة بناءً على علم ميزة
Route::middleware(function ($request, $next) {
    if (!Toggle::active('admin-v2')) {
        abort(404);
    }
    return $next($request);
})->prefix('admin-v2')->group(function () {
    Route::get('/', [NewAdminController::class, 'index']);
    // ... مسارات الإدارة v2 الأخرى
});

// أو تسجيل المسارات بشكل مشروط
if (Toggle::active('api-v2')) {
    Route::prefix('api/v2')->group(function () {
        // ... مسارات API v2
    });
}

الخلاصة #

توفر حزمة Laravel Toggle طريقة بسيطة وفعالة لتطبيق أعلام الميزات في تطبيقات Laravel الخاصة بك. من خلال تجريد منطق تشغيل وإيقاف تشغيل الميزات، فإنها تمكّن المطورين من نشر التعليمات البرمجية بثقة أكبر، وتجربة ميزات جديدة، والاستجابة بسرعة للمشكلات. سواء كنت تفضل بساطة متغيرات البيئة أو التحكم الديناميكي لقاعدة البيانات، فإن Laravel Toggle تغطي احتياجاتك، مما يساعدك على بناء تطبيقات Laravel أكثر قوة ومرونة.

FAQs

ما هي أعلام الميزات ولماذا تستخدم؟
أعلام الميزات (Feature Flags)، المعروفة أيضًا باسم مفاتيح الميزات، هي تقنية في تطوير البرمجيات تتيح لك تشغيل أو إيقاف تشغيل ميزات تطبيق دون الحاجة إلى نشر تعليمات برمجية جديدة. وهي مفيدة لاختبار A/B، وعمليات الطرح التدريجي (dark launches)، وإخفاء الميزات غير المكتملة عن المستخدمين، وتعطيل الميزات التي بها مشاكل بسرعة في بيئات الإنتاج للتخفيف من المخاطر.
كيف تدير حزمة Laravel Toggle أعلام الميزات؟
توفر حزمة Laravel Toggle طريقتين أساسيتين لإدارة أعلام الميزات: من خلال متغيرات البيئة (المعرفة في ملف `.env` الخاص بك مع بادئة `TOGGLE_`) أو عن طريق تخزين حالتها في جدول قاعدة بيانات (والتي يمكن إدارتها عبر أوامر Artisan). يمكنك تكوين الحزمة لاستخدام إحدى الطريقتين أو كلتيهما.
هل يمكن استخدام Laravel Toggle لأعلام الميزات الخاصة بالمستخدمين؟
صُممت حزمة Laravel Toggle في جوهرها لتوفير مفاتيح تشغيل/إيقاف *شاملة* للميزات عبر تطبيقك. بينما لا توفر بشكل مباشر مفاتيح تشغيل خاصة بالمستخدم أو المجموعة، يمكنك دمج عمليات التحقق من `Toggle::active()` مع منطق تطبيقك الخاص لتنفيذ سلوكيات خاصة بالمستخدم. على سبيل المثال، يمكنك التحقق من `if (Toggle::active('new-profile-page') && Auth::user()->hasRole('beta-tester'))`.

Want more content like this?

Explore more tutorials in the دروس section.

Explore دروس

You might also like

لارافيل
6 دقيقة قراءة

بايبر (Piper): إطلاق قوة مصفوفات وسلاسل لارافيل في PHP الخالصة باستخدام عامل الأنبوب

تُعد أساليب التعامل مع المصفوفات والسلاسل النصية بمرونة في لارافيل متعة حقيقية، حيث توفر طرقًا موجزة ومقروءة لتحويل البيانات. ماذا لو كان بإمكانك جلب نفس هذه ال...

May 23, 2026
اقرأ