من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.

أطلق فريق عمل Laravel الإصدار 13.35.0، مقدمًا مجموعة من الميزات والتحسينات المهمة التي تهدف إلى تبسيط عملية التطوير وزيادة كفاءتها. يضيف هذا التحديث أدوات جديدة للتعامل مع طلبات HTTP، ومرونة أكبر في تحديد القيم الافتراضية للموديلات، بالإضافة إلى تحسينات ملحوظة في أدوات الاختبار، إدارة الـ queues، وجدولة المهام.

ميزات توجيه الطلبات والموديلات

من أبرز الإضافات هي «Route::query()»، التي أتى بها Joel Butcher. تسمح هذه الدالة بتسجيل مسار لطلبات «HTTP QUERY»، وهي طريقة آمنة تدعم إرسال جسم الطلب (request body). هذا يجعلها مثالية لنقاط نهاية البحث التي تتطلب فلاتر معقدة وكبيرة جدًا لتمريرها عبر سلاسل الاستعلام التقليدية. سابقًا، كان يتم تعريف هذه المسارات باستخدام «Route::match([‘QUERY’], …)». تجدر الإشارة إلى أن مسار QUERY ضمن مجموعة الـ middleware «web» سيحتاج إلى رمز CSRF أو إضافته إلى قائمة الاستثناءات.

أعاد Wes Hooper جلب طريقة «defaults()» للموديلات من Laravel 14 إلى Laravel 13 كـ trait اختياري «HasDefaultAttributes». تسمح هذه الطريقة بتحديد قيم افتراضية لسمات الموديل بناءً على إعدادات التكوين، أو علامات الميزات (feature flags)، أو التاريخ الحالي. تعمل القيم المحددة في «defaults()» على تجاوز أي قيم افتراضية في خاصية «$attributes» وتتجاهل عمليات التحويل (casts) أو الـ mutators.

تحسينات للأداء والأتمتة

قام Jack Bayliss بتحديث الـ fakes الخاصة بـ «Queue» و «Bus» و «Event» و «Notification» لتقبل مصفوفة من القيم المتوقعة للخصائص بدلاً من الحاجة إلى رد اتصال (callback). هذا يبسط عملية التحقق في الاختبارات، حيث تتم مقارنة كل قيمة بمساواة صارمة، باستثناء موديلات Eloquent التي تُقارن باستخدام «is()». يجب أن تكون هذه الخصائص عامة (public) لكي يتمكن الـ fake من قراءتها.

أضاف Jack Bayliss أيضًا خيارًا جديدًا لمعامل «–memory» في الأمر «queue:work»، حيث أصبح يقبل الآن نسبة مئوية من «memory_limit» الخاص بـ PHP. هذا يتيح تحديد حدود الذاكرة للعاملين بناءً على حجم حاوية PHP بدلًا من قيمة ثابتة بالميغابايت، مما يوفر مرونة أكبر في إدارة الموارد.

لمعالجة تحديات الجدولة في البيئات متعددة الخوادم، قدم Jack Bayliss ميزة «Schedule::alwaysOnOneServer()». هذه الميزة تُطبق «onOneServer()» على جميع المهام المجدولة، مما يضمن تنفيذ كل مهمة على خادم واحد فقط، شريطة وجود مخزن مؤقت (cache store) مشترك بين جميع الخوادم. يتم تخطي مهام الـ Closure التي لا تحمل اسمًا، حيث أن «onOneServer()» يتطلب اسمًا لإنشاء قفل.

قام cyppe بتحسين طريقة إيقاف الأوامر المجدولة طويلة الأمد أثناء عمليات النشر (deployments). أصبح الأمر «php artisan schedule:interrupt» يخزن الآن طابعًا زمنيًا، تمامًا مثل «queue:restart». كما أُضيفت الدالة «Schedule::hasBeenInterruptedSince()» التي تسمح للأوامر المجدولة الطويلة بالتحقق من وجود إشارة مقاطعة والتوقف في نقطة آمنة، مما يمنع تعارضات غير مرغوبة.

أدوات إضافية للمطورين

أضاف Ashot Gharakeshishyan طريقة «markdown()» إلى مصنع الردود (response factory). تتكامل هذه الطريقة مع «request()->wantsMarkdown()»، مما يتيح للمطورين إرسال ردود بصيغة Markdown مباشرةً، مع نوع محتوى «text/markdown». يمكن لهذه الاستجابات أن تقبل حالة (status) ورؤوس (headers) مثل «response()->make()».

أخيرًا، أضاف Jamie York خيار «lazy_root_creation» لأقراص التخزين المحلية. مع تفعيل هذا الخيار، يتم إنشاء الدليل الجذر للقرص المحلي فقط عند كتابة أول ملف إليه، بدلاً من إنشائه عند بناء القرص نفسه. هذا يمكن أن يكون مفيدًا في سيناريوهات معينة لتحسين الأداء أو إدارة المساحة.

نرى أن تحديث Laravel 13.35.0 يقدم للمطورين أدوات قوية لتبسيط التعامل مع طلبات HTTP المعقدة، ومرونة أكبر في إدارة بيانات الموديلات، وتحسينات جوهرية في آليات الاختبار والجدولة وإدارة الـ queues. هذه الميزات، لا سيما «Route::query()» و «Model defaults()»، يمكن أن تقلل من الحاجة إلى حلول بديلة يدوية وتوفر وقت التطوير بشكل كبير، مما يؤدي إلى بنية كود أنظف وأكثر فعالية.

المصدر: laravel-news.com

WordPress كمصدر للحقيقة: تكامل مع AI في عمل الوكالات
وكلاء الذكاء الاصطناعي: سرعة فردية لا تعني فريقًا أسرع

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل