تهدف حزمة Laravel Query Detector لمساعدة المطورين وتنبيهم على مشكلة الاستعلام N+1 لمعالجتها، الأمر الذي يؤدي إلى تقليل عدد الإستعلامات المنفذة وبالتالي زيادة في تحسين أداء وتقليل في الوقت المطلوب للتنفيذ.
أثناء قيام المطور بكتابة الكود الخاص بالعلاقات بين جداول قاعدة البيانات، قد يسهو عن استخدام الوظيفة المساعدة (with) بالتالي تكون النتيجة القيام بإستعلام من نوع Lazy Loading بدلاً من Eager Loading وهذا يؤدي إلى مشكلة الـ N+1 التي ذكرناها. تقوم حزمة Laravel Query Detector بتدقيق الاستعلامات في الوقت الفعلي، وعند عثورها على أي استعلامات من نوع Lazy Loading تقوم بعرض رسالة تنبيهية في الصفحة المعنية لإضافة الوظيفة المساعدة with مع توضيح نوع العلاقة/العلاقات التي يجب تمريرها عبرها كما هو موضح في المثال التالي:
ولتثبيت هذه الحزمة والبدء باستخدامها، ما عليك سوى تنفيذ الأمر التالي:
للمزيد عن هذه الحزمة يمكنك زيارة المستودع الخاص بها.
توفر مكتبة Laravel Permission من Spatie نظام صلاحيات متكامل يسمح لك بإعداد وضبط الأذونات والصلاحيات في موقعك أو نظام الويب الخاص بك بالصورة الملائمة وطبيعة المستخدمين. من خلال مكتبة Laravel Permission يمكنك إضافة الأذونات (Roles) والصلاحيات (Permissions) - علماً بأنها متوافقة ومتكاملة مع نظام التوثيق الخاص بإطار العمل Laravel - ومن ثم إسنادهم للمستخدمين من خلال:
إسناد صلاحية أو أكثر مباشرة إلى المستخدم.
إسناد إذن أو أكثر إلى المستخدم مع ارتباط تلك الأذونات بعدة صلاحيات ما تنعكس تلقائيا على المستخدم صاحب تلك الأذونات.
إمكانية الدمج بين الإثنين بحيث يتم إسناد الأذونات بالصلاحيات التابعة لها للمستخدم مع إسناد صلاحيات أخرى مباشرة للمستخدم.
تثبيت مكتبة Laravel Permission
عليك أولا تنفيذ الأمر التالي من خلال سطر الأوامر في مجلد المشروع الخاص بك:
من ثم نشر ملف قاعدة البيانات وتنفيذه لإضافة الجداول الخاصة بالمكتبة ضمن قاعدة بياناتك وذلك عبر تنفيذ الأمرين التاليين:
نذهب إلى موديل المستخدمين الخاص بك ضمن المسار عادة ومن ثم نقوم بإضافة التعليمات لموضحة في الصورة التالية:
إضافة الأذونات والصلاحيات
تتم عملية الإضافة لهما بنفس الطريقة المتبعة للموديل ضمن إطار العمل Laravel:
كما يمكن إضافتهم عبر سطر الأوامر من خلال تنفيذ الأوامر أدناه:
إسناد الأذونات والصلاحيات
إسناد الصلاحيات للأذونات
إسناد الأذونات للمستخدم
إسناد الصلاحيات مباشرة للمستخدم
أطلقت Spatie إصداراً رئيسياً جديداً من مكتبتها Ignition وهي لمن لا يعلم مكتبة خاصة بعرض صفحات الأخطاء ضمن إطار عمل Laravel بطريقة جذابة وواضحة مع عديد المزايا كاقتراح سبب المشكلة والحل الخاص بها.
أول إصدار من مكتبة Ignition تم إطلاقها بالتزامن مع Laravel6 لتكون بديلاً عن صفحة الأخطاء الشهيرة Whoops، وقد تم اعتماد هذه الإصدارة الجديدة لتصبح صفحة الأخطاء الرئيسية في Laravel9 مع إمكانية تثبيتها ضمن Laravel8.
تأتي Ignition في إصدارتها الرئيسية الجديدة مع العديد من الامتيازات من أهمها:
اعتمادها كصفحة أخطاء رئيسية ضمن الإصدار المرتقب Laravel9
امكانية تثبيتها واستخدامها ضمن Laravel8
إمكانية تخصيص زر (عرض في المحرر) ليتم استخدام المحرر المفضل لديك
تجميع استدعاءات dump() وعرض نتائجها ضمن قسم منفصل
عرض الاستعلامات المنفذة خلال كل طلب - request - مع وقت تنفيذ كل استعلام
توفر القالب بنمطي Light و Dark مع إمكانية التطبيق التلقائي حسب إعدادات النظام
ولمعرفة بقية الامتيازات الخاصة بهذه المكتبة، يمكنك زيارة المستودع خاص بها عبر هذا الرابط.
يعتبر Laravel من أكثر أطر عمل PHP استخداماً في السنوات الأخيرة حيث يتم الإعتماد عليه من عديد المطورين والشركات التي تعمل باستخدام PHP وسيتم إطلاق النسخة 9 بداية شهر فبراير 2022.
سابقاً كانت إصدارات Laravel الرئيسية تصدر كل 6 أشهر مما كان يسبب بعض الإرباك خاصة للمطورين الجدد في هذا المجال. الآن، ابتداءً من النسخة 9، تم تغيير منظومة الإصدارات الرئيسية لتكون سنوية بدل كل 6 أشهر. وفي ما يلي أبرز المستجدات المرتقبة في النسخة 9 من Lavael.
الإصدار PHP8 هو الحد الأدنى في Laravel9
تصميم جديد للأمر route:list
إستخدام الكلاسات المجهولة في ملفات بناء جداول قاعدة البيانات
استخدام الوظائف النصية الجديدة في PHP8
الإنتقال من SwiftMailer إلى Symfony Mailer
إلغاء الملف server.php
الإصدار PHP8 هو الحد الأدنى في Laravel9
بما أن Laravel9 انتقل لإستخدام الإصدارة 6 من Symfony والتي تعتمد PHP8 كحد أدنى، فقد أصبح Laravel9 يعتمد أيضاً على PHP8 كحد أدنى.
تصميم جديد للأمر route:list
يعتبر الأمر route:list والخاص بعرض مسارات موقعك من أوائل الأوامر المضمنة في Laravel. وبالرغم من فائدته، إلا أنه يكون مزعجاً عند العرض خاصة عندما تكون هناك مسارات طويلة ومعقدة. هذا الأمر تغير الآن بعد أن تم إعادة تصميم طريقة عرض نتائج تنفيذ الأمر route:list في إصدارة Laravel9 لتكون بطريقة واضحة، بسيطة، وأنيقة.
إستخدام الكلاسات المجهولة في ملفات بناء جداول قاعدة البيانات
في الإصدار الـ 8 من Laravel وما سبقه من إصدارات، عندما يتم تنفيذ الأمر:
تكون النتيجة كالتالي:
إذا تطلب الأمر لاحقا تعديل الحقول في هذا الجدول وحاولت استخدام نفس الأمر، سينتج عن ذلك خطأ باعتبار أن التسمية CreateCustomersTable مستخدمة من قبل مما يتطلب أن تقوم بإعادة تنفيذ الأمر مع تسمية مختلفة. قد يكون الأمر عاديا في المشاريع الصغيرة لكن في المشاريع الكبيرة والتي يتم تطوير وتعديل حقول الجداول لتلبية متطلبات المشروع فإن ذلك يمثل مشكلة.
جاء الحل مع Laravel9 حيث تم اعتماد إنشاء الكلاسات المجهولة (Anonymous) أو كما يطلق عليها البعض عديمة التسمية وبالتالي لن يحصل أي تعارض عند تكرار استخدام الأمر السابق عدة مرات حيث ستكون البنية الناتجة من تنفيذ ذلك الأمر كالتالي:
استخدام الوظائف النصية الجديدة في PHP8
بما أن Laravel9 أصبحت تعتمد PHP8 كحد أدنى، فقد تم تغيير الكلاس Illuminate\Support\Str ليعتمد استخدام الوظائف النصية التالية بشكل أساسي والتي تم إضافتها في PHP8 وهي str_contains، str_starts_with، و str_ends_with.
الإنتقال من SwiftMailer إلى Symfony Mailer
قامت Symfony بإيقاف تطوير مكتبتها SwiftMailer واعتماد المكتبة الجديدة Symfony Mailer. نظرا لهذا، ستراعي Laravel9 حيث ستعتمد المكتبة الجديدة Symfony Mailer في تنفيذ عمليات البريد الإلكتروني.
إلغاء الملف server.php
تغيير طفيف آخر قادم مع Laravel9 وهو إلغاء الملف server.php حيث تم تضمين الكود الخاص به ضمن الملفات الرئيسية لإطار العمل Laravel9. ولا يوجد استخدام لهذا الملف سوى تنفيذ الأمر:
وتعتبر هذه أبرز التغييرات القادمة في Laravel9 وسيتم معرفة المزيد بعد الصدور الرسمي لها بتاريخ 9 فبراير 2022.