الجديد في Laravel: ما الجديد في الإصدارات الحديثة؟ (Laravel Edition #002)
في هذا المقال، سنتعرف على أبرز التحسينات التي جاءت مع Laravel، وسنقارن بين الأسلوب القديم والأسلوب الحديث لنفهم الفائدة العملية من كل ميزة.
1️⃣ تحسين التوجيه @use في Blade
✅ الأسلوب القديم:
في قوالب Blade، إذا أردت استخدام دوال أو ثوابت من خارج القالب، كنت تحتاج إلى كتابة وسوم PHP داخل Blade:
<?php use App\Helpers\formatPrice; ?> <?php use App\Constants\TAX_RATE; ?> <p>السعر بعد الضريبة: {{ formatPrice($price * TAX_RATE) }}</p>
هذا كان يُسبب تشويشًا في القالب، ويجعل الكود أقل نظافة.
🚀 التحسينات:
أصبح بإمكانك الآن استيراد الدوال والثوابت مباشرة باستخدام @use:
@use function App\Helpers\formatPrice; @use const App\Constants\TAX_RATE; <p>السعر بعد الضريبة: {{ formatPrice($price * TAX_RATE) }}</p>
هذا يُحسن من مظهر القالب ويجعله أنظف وأسهل قراءة.
📚 المصدر:
https://laravel.com/docs/12.x/blade#the-use-directive
2️⃣ إدارة سلسلة المهام بـ prependToChain() و appendToChain()
✅ الأسلوب القديم:
لإضافة مهام إضافية إلى سلسلة Jobs بعد إنشائها، كان عليك كتابة منطق مخصص لإعادة بناء السلسلة:
$chain = Job::withChain([ new FirstJob, new SecondJob, ])->dispatch(); $existingChain = [$newJob, ...$chain->chain]; // بناء السلسلة يدويًا $chain->chain = $existingChain;
🚀 التحسينات:
أُضيفت دوال prependToChain() وappendToChain() لتقوم بهذه المهمة بكل سهولة:
$chain->prependToChain([ new PrependedJobOne, new PrependedJobTwo, ]); $chain->appendToChain([ new AppendedJobOne, new AppendedJobTwo, ]);
وهذه الدوال تضمن ترتيب المهام تلقائيًا بدون الحاجة لتعديل المصفوفات يدويًا.
📚 المصدر:
https://github.com/laravel/framework/releases/tag/v12.13.0
3️⃣ دعم الـ Callback في containsOneItem()
✅ الأسلوب القديم:
للتحقق إذا كان هناك عنصر واحد فقط يحقق شرطًا معينًا في Collection:
$filtered = $collection->filter(fn($item) => $item === 2); $isOne = $filtered->count() === 1;
🚀 التحسينات:
الآن باستخدام containsOneItem() مع callback:
$collection->containsOneItem(fn($item) => $item === 2);
هذا يُقلل من حجم الكود، ويجعله أكثر وضوحًا.
📚 المصدر:
https://github.com/laravel/framework/pull/49558
4️⃣ إضافة assertRedirectBack() للاختبارات
✅ الأسلوب القديم:
للتحقق في الاختبارات من إعادة التوجيه للصفحة السابقة:
$response->assertRedirect(url()->previous());
🚀 التحسينات:
الآن باستخدام:
$response->assertRedirectBack();
هذا يجعل الاختبار أكثر وضوحًا وأقل عرضة للأخطاء.
📚 المصدر: