Laravel
بناء تطبيقات الويب باستخدام Laravel: التوجيه، ونماذج Eloquent، والمصادقة، والطوابير، والنشر، مشروحة بأمثلة عملية يمكنك استخدامها في مشاريع حقيقية.
لا توجد مقالات في هذا القسم بعد!
نحن نجهّز محتوى قيّماً لهذا القسم. يمكنك استكشاف أقسامنا الأخرى في هذه الأثناء، أو العودة قريباً!
أسئلة حول هذا الموضوع
إجابات سريعة وواضحة عن أكثر ما يسأل عنه القرّاء حول هذا الموضوع.
ما هو Laravel؟
Laravel إطار عمل مجاني ومفتوح المصدر بلغة PHP لبناء تطبيقات الويب. ويعطي المطورين أجزاء جاهزة للتوجيه وقواعد البيانات وتسجيل الدخول والبريد والطوابير والاختبار، فيكتبون كودا مكررا أقل. ويتبع الإطار نمط النموذج والعرض والمتحكم MVC وله مجتمع كبير.
فيم يستخدم Laravel؟
يستخدم Laravel لبناء تطبيقات الويب مثل أنظمة الإدارة وبوابات العملاء والمتاجر الإلكترونية ومنصات الحجز وواجهات API لتطبيقات الجوال. ويناسب أي مشروع يحتاج إلى مستخدمين وقاعدة بيانات وقواعد عمل. وكثير من الشركات تشغل عليه أنظمة خاصة كبيرة لأنه مستقر وسهل التوسعة.
هل Laravel مناسب للمبتدئين؟
نعم، Laravel مناسب للمبتدئين الذين يعرفون أساسيات PHP، لأن كوده مقروء وتوثيقه الرسمي واضح. كما أن له مجتمعا كبيرا ودروسا كثيرة وحزم بداية تجهز لك صفحات تسجيل الدخول. وتعلم PHP العادية أولا يجعل فهم الإطار أسهل بكثير.
كيف أثبت Laravel على جهازي؟
تثبت Laravel بتثبيت PHP وComposer أولا، ثم تشغيل الأمر composer create-project laravel/laravel متبوعا باسم مشروعك. ومثبت Laravel، عبر الأمر laravel new، يفعل الشيء نفسه ويعرض حزم البداية. بعد ذلك يشغل الأمر php artisan serve خادما محليا لتفتح التطبيق في متصفحك.
ما إصدار PHP الذي يحتاجه Laravel؟
يحتاج Laravel إلى إصدار حديث من PHP 8، وكل إصدار من Laravel يذكر أقل إصدار PHP يدعمه. والإصدارات الأحدث من Laravel تتوقف عن دعم إصدارات PHP القديمة عندما ينتهي دعمها الأمني. وراجع دائما دليل الترقية لإصدار Laravel الذي تنوي استخدامه.
ما هو التوجيه routing في Laravel؟
التوجيه في Laravel يربط عنوان ويب وطريقة HTTP، مثل GET أو POST، بالكود الذي يجيب عنه. وتكتب المسارات في ملفات مثل routes/web.php للصفحات وroutes/api.php لواجهات API. ويمكن للمسار أن يستدعي دالة مغلقة أو دالة في متحكم، وأن يحمل وسطاء middleware لفحص تسجيل الدخول وغيره.
ما هو Eloquent في Laravel؟
Eloquent هو أداة ORM في Laravel، وهو الجزء الذي يتيح لك التعامل مع جداول قاعدة البيانات كفئات PHP تسمى النماذج. فكل نموذج يقابل جدولا وكل كائن يقابل صفا، فتقرأ البيانات وتحفظها دون كتابة SQL. كما يتعامل Eloquent مع العلاقات مثل واحد إلى متعدد ومتعدد إلى متعدد.
كيف تعمل علاقات Eloquent في Laravel؟
علاقات Eloquent في Laravel دوال في النموذج، مثل hasMany وbelongsTo وbelongsToMany، تصف كيف يرتبط جدولان. وبعد تعريفها تقرأ البيانات المرتبطة مثل $order->customer دون كتابة join. والتحميل المسبق بدالة with يجلب الصفوف المرتبطة دفعة واحدة ويتجنب الاستعلامات المتكررة البطيئة.
ما هي مشكلة استعلامات N+1 في Laravel؟
تحدث مشكلة N+1 في Laravel عندما يحمل الكود قائمة سجلات ثم يشغل استعلاما إضافيا لكل سجل لجلب بياناته المرتبطة. فصفحة فيها 100 طلب قد تشغل 101 استعلام وتصبح بطيئة. والتحميل المسبق بدالة with يحل المشكلة بجلب الصفوف المرتبطة في استعلام واحد.
ما هي الترحيلات migrations في Laravel؟
الترحيلات في Laravel ملفات PHP تنشئ جداول قاعدة البيانات وتعدلها بالكود. ويطبقها الأمر php artisan migrate، فيحصل كل مطور وكل خادم على بنية قاعدة البيانات نفسها. ولأن الترحيلات محفوظة في نظام إدارة النسخ، يبقى سجل كل تغيير في الجداول محفوظا.
ما هو Blade في Laravel؟
Blade هو محرك القوالب في Laravel لكتابة صفحات HTML بوسوم بسيطة للحلقات والشروط والتخطيطات. ويهرب Blade القيم المطبوعة افتراضيا، وهذا يحمي الصفحات من البرمجة النصية عبر المواقع. وتترجم القوالب إلى PHP عادية وتخزن مؤقتا، فلا يضيف Blade تقريبا أي عبء على كل طلب.
كيف تعمل المصادقة وتسجيل الدخول في Laravel؟
تعمل المصادقة في Laravel عبر حراس guards يتحققون من هوية المستخدم، ومزودين providers يحملون المستخدمين من قاعدة البيانات. وحزم البداية مثل Laravel Breeze تضيف صفحات جاهزة لتسجيل الدخول والتسجيل واستعادة كلمة المرور. وتجزأ كلمات المرور بخوارزمية bcrypt أو Argon2، فلا تحفظ أبدا كنص صريح.
ما الفرق بين Laravel Sanctum وLaravel Passport؟
يقدم Laravel Sanctum تسجيل دخول بسيطا بالرموز وملفات تعريف الارتباط لتطبيقات الصفحة الواحدة وتطبيقات الجوال وواجهات API الأساسية، أما Laravel Passport فخادم OAuth2 كامل. ومعظم المشاريع تحتاج إلى Sanctum فقط لأنه أخف وأسهل في الإعداد. ويناسب Passport الحالات التي تحتاج فيها تطبيقات خارجية إلى تسجيل الدخول نيابة عن مستخدميك.
ما هي الوسطاء middleware في Laravel؟
الوسطاء في Laravel طبقات تفحص الطلب أو تغيره قبل وصوله إلى كودك، أو تفحص الاستجابة قبل خروجها. ومن أشهرها فحص تسجيل الدخول، والحماية من CSRF، وتحديد معدل الطلبات، وضبط اللغة. ويمكنك ربط الوسطاء بمسار واحد أو مجموعة مسارات أو بالتطبيق كله.
كيف تعمل الطوابير queues في Laravel؟
تنقل الطوابير في Laravel المهام البطيئة، مثل إرسال البريد أو إنشاء التقارير، من طلب الويب إلى مهام تعمل في الخلفية. فتدفع المهمة إلى مشغل طوابير مثل Redis أو قاعدة البيانات، ويشغلها عامل يبدأ بالأمر php artisan queue:work. فيحصل المستخدم على استجابة سريعة بينما ينتهي العمل الثقيل في الخلفية.
متى أستخدم الطوابير في تطبيق Laravel؟
استخدم الطوابير في تطبيق Laravel كلما استغرقت المهمة أكثر من لحظة أو تواصلت مع خدمة خارجية، مثل البريد ومعالجة الملفات وخطافات الدفع. فالطوابير تبقي الصفحات سريعة وتتيح للمهام الفاشلة إعادة المحاولة تلقائيا. ويوفر Laravel Horizon لوحة متابعة لمراقبة طوابير Redis.
كيف أجدول المهام في Laravel؟
تجدول المهام في Laravel بتعريفها في المجدول بدوال مثل daily أو everyFiveMinutes، ثم تشغيل الأمر php artisan schedule:run كل دقيقة من إدخال cron واحد على الخادم. ثم يقرر المجدول أي المهام حان وقتها. وهذا يبقي كل المهام الموقوتة في الكود بدلا من أسطر cron كثيرة منفصلة.
كيف أتحقق من بيانات النماذج في Laravel؟
تتحقق من بيانات النماذج في Laravel بدالة validate على الطلب، أو بفئة Form Request تحمل القواعد. وقواعد مثل required وemail وmax وunique تفحص كل حقل قبل أن يستخدمه كودك. وعندما يفشل التحقق يعيد Laravel المستخدم مع رسائل الخطأ والمدخلات السابقة.
كيف يحمي Laravel من هجمات الويب الشائعة؟
يحمي Laravel من هجمات الويب الشائعة برموز CSRF في النماذج، وتهريب المخرجات في Blade، وربط المعاملات في استعلامات قاعدة البيانات، وتجزئة كلمات المرور. وهذه الإعدادات الافتراضية تحجب تزوير الطلبات عبر المواقع والبرمجة النصية عبر المواقع وحقن SQL في الاستخدام العادي. لكن على المطورين أيضا التحقق من المدخلات وفحص الصلاحيات وتحديث الإطار.
كيف أنشر تطبيق Laravel على خادم؟
تنشر تطبيق Laravel بسحب الكود إلى الخادم، وتشغيل composer install دون حزم التطوير، وضبط ملف .env، وتشغيل الترحيلات. ثم تخزن الإعدادات والمسارات والعروض مؤقتا، وتوجه خادم الويب إلى مجلد public. وكثير من الفرق تؤتمت هذه الخطوات من Git لتكون كل نسخة منشورة مطابقة للأخرى.
ما الخادم الذي يحتاجه تطبيق Laravel؟
يحتاج تطبيق Laravel إلى خادم عليه PHP، وخادم ويب مثل Nginx أو Apache، وقاعدة بيانات مثل MySQL أو PostgreSQL، وComposer. وكثيرا ما يضاف Redis للتخزين المؤقت والطوابير، ومدير عمليات يبقي عمال الطوابير يعملون. وتقدم Hostrena، علامة الاستضافة التابعة لـ Linkysoft، استضافة تطبيقات ويب لـ Laravel تنشر مباشرة من Git.
كيف أجعل تطبيق Laravel أسرع؟
تجعل تطبيق Laravel أسرع بتخزين الإعدادات والمسارات والعروض مؤقتا، والتحميل المسبق للعلاقات، وإضافة فهارس لأعمدة قاعدة البيانات التي تبحث فيها. ويساعد أيضا نقل العمل البطيء إلى الطوابير وتخزين نتائج الاستعلامات الثقيلة في Redis. وتفعيل PHP OPcache على الخادم يعطي تحسنا كبيرا بجهد قليل.
كيف أختبر تطبيق Laravel؟
تختبر تطبيق Laravel باستخدام PHPUnit أو Pest، وكلاهما مجهز في كل مشروع جديد. فاختبارات الميزات ترسل طلبات وهمية إلى مساراتك وتفحص الاستجابة وقاعدة البيانات، واختبارات الوحدة تفحص فئات منفردة. والأمر php artisan test يشغل مجموعة الاختبارات كلها.
هل يتحمل Laravel تطبيقات كبيرة بمستخدمين كثيرين؟
نعم، يتحمل Laravel التطبيقات الكبيرة ذات المستخدمين الكثيرين عندما يعمل على خوادم جيدة مع التخزين المؤقت والطوابير وفهارس قاعدة البيانات وأكثر من خادم تطبيق خلف موزع أحمال. ونادرا ما يكون الإطار نفسه هو الحد، بل الاستعلامات البطيئة وغياب التخزين المؤقت غالبا. ولهذا السبب تبني Linkysoft تطبيقات ويب مخصصة باستخدام PHP وLaravel وMySQL وRedis.
كم مرة يجب أن أرقي إصدار Laravel؟
يجب أن ترقي إصدار Laravel على الأقل قبل أن يتوقف إصدارك الحالي عن تلقي الإصلاحات الأمنية. ويصدر Laravel إصدارا رئيسيا مرة في السنة تقريبا، ومع كل إصدار دليل ترقية. والترقيات الصغيرة المنتظمة أسهل بكثير من القفز عدة إصدارات مرة واحدة.