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

تنفيذ ميزات الأعلام (Feature Flags) في Laravel باستخدام Laravel Toggle

Admin User
Admin User
May 25, 2026
6 دقيقة قراءة

Key Takeaways

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

فهم ميزات الأعلام (Feature Flags) في Laravel #

ميزات الأعلام، والمعروفة أيضًا بـ "feature toggles"، هي تقنيات قوية في تطوير البرمجيات الحديثة تسمح لك بتشغيل أو إيقاف وظائف محددة في تطبيقك دون الحاجة إلى نشر كود جديد. يوفر هذا مرونة هائلة لاختبارات A/B، وعمليات الطرح التدريجي (الإطلاق الخفي)، ومفاتيح الإيقاف الطارئة، وتخصيص تجارب المستخدمين.

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

في هذا البرنامج التعليمي، سنرشدك خلال إعداد واستخدام Laravel Toggle لتنفيذ ميزات الأعلام في مشروع Laravel الخاص بك.

الخطوة 1: التثبيت #

الخطوة الأولى هي تثبيت Laravel Toggle عبر Composer. افتح سطر الأوامر في مجلد مشروع Laravel الرئيسي لديك وقم بتشغيل:

composer require staudenmeir/laravel-toggle

الخطوة 2: التهيئة (Configuration) #

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

php artisan vendor:publish --provider="Staudenmeir\LaravelToggle\LaravelToggleServiceProvider"

سيؤدي هذا الأمر إلى إنشاء ملف toggle.php في مجلد config الخاص بك. افتح config/toggle.php لمراجعة محتوياته:

return [
    /*
    |--------------------------------------------------------------------------
    | Default Toggle Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the default toggle driver that will be used.
    | Valid options are "env", "database", or "both".
    |
    */
    'driver' => env('TOGGLE_DRIVER', 'env'), // الافتراضي هو 'env'
/*
|--------------------------------------------------------------------------
| Toggle Default Value
|--------------------------------------------------------------------------
|
| This value will be returned when a toggle is not found.
|
*/
'default_value' => false,

/*
|--------------------------------------------------------------------------
| Database Table
|--------------------------------------------------------------------------
|
| This is the database table that will be used to store toggles.
|
*/
'table' => 'features',

];

يمكنك تغيير driver في ملف .env الخاص بك، على سبيل المثال: TOGGLE_DRIVER=database أو TOGGLE_DRIVER=both.

الخطوة 3: إعداد مشغل قاعدة البيانات (اختياري) #

إذا اخترت database أو both كمشغل لديك، فستحتاج إلى إنشاء جدول لتخزين ميزات الأعلام الخاصة بك. يوفر Laravel Toggle أمرًا مناسبًا لذلك:

php artisan toggle:table
php artisan migrate

سيؤدي هذا إلى إنشاء جدول features في قاعدة البيانات الخاصة بك مع أعمدة مثل name و active. يمكنك بعد ذلك إدارة ميزات الأعلام الخاصة بك مباشرة من هذا الجدول. على سبيل المثال، لتمكين ميزة تسمى new-dashboard:

INSERT INTO features (name, active, created_at, updated_at) VALUES ('new-dashboard', 1, NOW(), NOW());

أو برمجيًا:

// في seeder أو controller
\DB::table('features')->insert([
    'name' => 'new-dashboard',
    'active' => true,
    'created_at' => now(),
    'updated_at' => now(),
]);

الخطوة 4: تعريف واستخدام ميزات الأعلام #

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

4.1. استخدام متغيرات البيئة (المشغل: env أو both)

أبسط طريقة لتعريف علم هي من خلال ملف .env الخاص بك. قم ببادئة اسم العلم الخاص بك بـ TOGGLE_.

مثال: لإنشاء علم لـ "لوحة تحكم جديدة":

TOGGLE_NEW_DASHBOARD=true
TOGGLE_BETA_FEATURES=false

تذكر تشغيل php artisan config:clear إذا لم تنعكس تغييرات .env الخاصة بك على الفور في التهيئة المخزنة مؤقتًا.

4.2. الوصول إلى الأعلام في الكود الخاص بك

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

use Staudenmeir\LaravelToggle\Facades\Toggle;
  • التحقق مما إذا كانت الميزة قيد التشغيل (ON):
    if (Toggle::on('new-dashboard')) {
        // عرض واجهة المستخدم الجديدة للوحة التحكم
    }
    
  • التحقق مما إذا كانت الميزة متوقفة (OFF):
    if (Toggle::off('experimental-feature')) {
        // إخفاء الميزة التجريبية
    }
    
  • التحقق بقيمة افتراضية (إذا لم يتم العثور عليها في البيئة/قاعدة البيانات):
    تغطي default_value في config/toggle.php هذا، ولكن يمكنك أيضًا تمرير وسيطة ثانية صراحةً إلى on() أو off() لتجاوز القيمة الافتراضية لهذا التحقق المحدد.
    // إذا لم يتم تعريف 'super-secret-feature' في أي مكان، فستعيد هذه القيمة true
    if (Toggle::on('super-secret-feature', true)) {
        // ...
    }
    

4.3. أمثلة عملية

  • في Controllers:
    التحكم في المنطق أو تمرير المتغيرات إلى العروض بناءً على ميزات الأعلام.

    namespace App\Http\Controllers;
    

    use App\Http\Controllers\Controller; use Staudenmeir\LaravelToggle\Facades\Toggle;

    class DashboardController extends Controller { public function index() { $showNewDashboard = Toggle::on('new-dashboard'); $showBetaFeatures = Toggle::on('beta-features');

        return view('dashboard.index', compact('showNewDashboard', 'showBetaFeatures'));
    }
    

    }

  • في Blade Views:
    عرض عناصر واجهة المستخدم بشكل مشروط.

    
    

    أهلاً بك في لوحة التحكم الخاصة بك

    @if ($showNewDashboard)

    أنت تشاهد تجربة لوحة التحكم الجديدة!
    {{-- تضمين مكون لوحة التحكم الجديدة --}} @else
    أنت تشاهد تجربة لوحة التحكم الكلاسيكية. جرب الجديدة!
    {{-- تضمين مكون لوحة التحكم القديمة --}} @endif

    @if (Toggle::on('beta-features'))

    ميزات تجريبية (Beta) #

    مرحباً بك في ميزاتنا التجريبية الحصرية!

    {{-- ... محتوى بيتا آخر ... --}}
    @endif

  • في Routes (عبر Middleware):
    تقييد الوصول إلى مسارات معينة بناءً على ميزات الأعلام.

    // web.php
    use Staudenmeir\LaravelToggle\Facades\Toggle;
    

    Route::middleware('web')->group(function () { // مسارات عامة Route::get('/', function () { return view('welcome'); });

    // مسارات تتطلب ميزة 'new-dashboard'
    Route::middleware(function ($request, $next) {
        if (Toggle::on('new-dashboard')) {
            return $next($request);
        }
        // إذا كانت الميزة متوقفة، قم بإعادة التوجيه أو الإلغاء
        return redirect('/old-dashboard')->with('error', 'لوحة التحكم الجديدة غير نشطة بعد.');
    })->group(function () {
        Route::get('/dashboard/new', [App\Http\Controllers\NewDashboardController::class, 'index'])->name('new.dashboard');
    });
    
    // مسارات أخرى تتطلب المصادقة
    Route::get('/dashboard/old', [App\Http\Controllers\OldDashboardController::class, 'index'])->name('old.dashboard');
    

    });

فوائد وحالات استخدام Laravel Toggle #

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

الخاتمة #

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

FAQs

ما هي ميزات الأعلام (Feature Flags)؟
ميزات الأعلام (أو toggles) هي عبارات شرطية في الكود الخاص بك تسمح لك بتشغيل الميزات أو إيقافها دون نشر كود جديد. إنها تعمل بمثابة "مفاتيح" لوظائف محددة، مما يتيح استراتيجيات تطوير ونشر مرنة.
لماذا يجب أن أستخدم Laravel Toggle؟
يقدم Laravel Toggle حلاً خفيف الوزن وسهل الاستخدام لتنفيذ ميزات الأعلام العالمية في Laravel، باستخدام طرق مألوفة مثل متغيرات البيئة أو إدخالات قاعدة البيانات. إنه يبسط اختبارات A/B، وعمليات الطرح المرحلي، وتعطيل الميزات في حالات الطوارئ، مما يعزز مرونة تطبيقك.
هل يمكنني استخدام متغيرات البيئة وقاعدة البيانات للأعلام معًا؟
نعم، يدعم Laravel Toggle خيار المشغل `both` في تهيئته. يتيح لك هذا إعطاء الأولوية للأعلام المعرفة في متغيرات البيئة (`.env`) والعودة إلى إدخالات قاعدة البيانات إذا لم يتم العثور على علم معين في البيئة.
هل Laravel Toggle مناسب لميزات الأعلام لكل مستخدم؟
يركز Laravel Toggle بشكل أساسي على ميزات الأعلام *العالمية* التي تؤثر على جميع المستخدمين أو شريحة محددة عبر مفتاح واحد. بينما يمكنك بناء نظام فوقه للتحقق من الأذونات الخاصة بالمستخدم، لتطبيق ميزات أعلام قوية وخاصة بالمستخدم، قد تحتاج إلى النظر في حزم أخرى أو تطبيقات مخصصة تتكامل بشكل أعمق مع نماذج المستخدم.

Want more content like this?

Explore more tutorials in the دروس section.

Explore دروس

You might also like

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

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

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

May 23, 2026
اقرأ