ما هو الجديد في Laravel 5.2

السلام عليكم جميعاً

بما أنّ الإصدار الجديد من إطار عمل لارافل قد تم إصداره بشكل رسمي البارحة، فإليكم ما هو الجديد في Laravel 5.2 :

سقالة المصادقة Auth Scaffolding

أولاً لنبدء بمعنى سقالة في العربية وهي: مَا يَتَّخِذُهُ البَنَّاءونَ وَغَيْرُهُمْ مِنَ القَوَائِمِ والأَخْشَابِ لِلْوصُولِ إلَى أعَالِي البِنَاءِ.
وهي بإختصار كلمة نستخدمها في عالم البرمجة للدلالة على أداة تساعدنا على توليد ملفات وشفرات، وفي هذه الحالة سقالة المصادقة هي أمر جديد مضاف إلى الحرفي أرتسن Artisan و عند تنفيذه سيولد لك العروض والملفات اللازمة لعملية المصادقة وتسجيل الحسابات وتسجيل دخول الحسابات أيضاً، ولتنفيذها:

php artisan make:auth

 

ربط مودل ضمني Implicit model binding

ربط مودل ضمني هو ميزة جديدة تقوم بالربط التلقائي للموديل Model مع الراوت Route ، وإليكم مثالاً عن ذلك:

Route::get('/api/posts/{post}', function(Post $post) {
    return $post;
});

وما يقوم به فعلياً خلف الكواليس هو استدعاء التعليمة Post::findOrFail($post)  وحقن المتحول بوست $post ، لمطورين لارافل بالسابق كنا نقوم بفعل هذا يدوياً وهو شبيه به جداً ميزة ربط مودل ضمني في 5.1

 

إلحاق خرج المهام المجدولة

مجدول المهام في لارافل يمكنه الآن إلحاق ناتج خرج مهمة إلى ملف كما في هذا المثال:

$schedule->command('emails:send')
    ->hourly()
    ->appendOutputTo($filePath);

مسبقاً، لارافل تضمنت خيار sendOutputTo والذي يقوم بكتابة الخرج على ملف ولكن لا يقوم بالإلحاق.

التحقق من صحة مصفوفة في نموذج Form Array Validation

لنقل أننا نملك نموذج مع مصفوفة من الحقول كدخل كمل في هذه الأسطر:

<p>
<input type="text" name="person[1][id]">
<input type="text" name="person[1][name]">
</p>
<p>
<input type="text" name="person[2][id]">
<input type="text" name="person[2][name]">
</p>

 

في لارافل 5.1 للتحقق من مثل هذا النوع من الدخل نحتاج إلى المرور على الحقول عن طريق حلقة وإضافة القواعد بشكل منفرد لكل حقل. وبدل من القيام بكل هذا تم تحويله إلى شكل أريح وأفضل بكثير ليصبح كالتالي:

$v = Validator::make($request->all(), [
  'person.*.id' => 'exists:users.id',
  'person.*.name' => 'required:string',
]);

 

جوكر للمجموعات Collections Wildcards

الآن وعند إستخدامنا لمجموعة ما وعند حاجتنا لإستخراج بيانات ما نستطيع إستخدام النجمة * كبدل أو جوكر:

$posts->pluck('posts.*.title');

هذه التعليمة ستقوم بإسترجاع جميع العناوين لجميع المنشورات posts.

درايفر الجلسة بإستخدام قاعدة البيانات Database Session Driver

الآن درايفر جلسة قاعدة البيانات يتضمن حقلين جديدن وهما user_id و ip_address ، وهذا ما يسهل عليك تصفير متحول الجلسة لمستخدمين محددين!

مجموعات الطبقة الوسطى (المدلووير) Middleware Groups

مجموعات المدلووير تسمح لك بتجميع عدة مدلووير لروابط كمفتاح واحد مناسب، وبالتالي تسمح لك بإسناد عدة ميدلووير لعدة روابط عن طريق الكتابة لمرة واحدة.
فمثلاً هذا أمر مفيد جداً في حال بناءك لواجهة API في تطبيقك، يمكنك جمع مدلووير الجلسة و مدلوور CSRF في مجموعة واحدة والتي تحوي على عدة روابط ولربما تضيف أيضاً عدد إستدعاءات محدد لهذه المجموعة كما سترى هذه الميزة الجديدة في العنوان القادم، ولكن الآن يمكنك أن تشاهد ما كتب تايلور عن هذه الميزة:

حد المعدل Rate Limiting

مدلووير لحد المعدل الآن جزء من إطار عمل لارافل، يسمح لك وبشكل سهل جداً بحد عدد الطلبات لعنوان IP محدد التي يمكنه القيام بها على رابط محدد على عدد من الدقائق المحددة أيضاً. وللمثال: لحد رابط لـ 60 طلباً كل دقيقة لكل عنوان IP على حدا ، يمكنك تمثيله كالتالي:

Route::get('/api/users', ['middleware' => 'throttle:60,1', function () {
    //
}]);

 

النطاق الشامل لإلكونت Eloquent Global Scope

لعدد من الإصدارات السابقة لهذا الإطار كان النطاق الشامل لإلكونت أمراً معقداً وصعباً و تنفيذه كان أمراً معرضاً للخطأ، بينما في لارافل 5.2 نطاق الإستعلام الشامل يتطلب منك تنفيذ دالة واحدة بسيطة، ويمكنك زيارة المستندات الموجودة على الموقع الرسمي لتتعلمها، أما أنا فسوف أقوم بمناقشتها في سلسة تعليمية على شكل فيديو لاحقاً.

وهذا كل ما هو جديد، وفي حال رغبتك بالإنتقال من الإصدار السابق إلى هذا الإصدار فيمكنك إتابع هذا الدليل.

طاب يومكم