تعرف على بعض الدوال المساعدة في Laravel

توجد العديد من الدوال المساعدة في اطار العمل Laravel التي تزيد من كفاءة التطوير، ادا كنت من مستعملي اطر العمل، فإنني أشجعك على معرفة الدوال المساعدة المتاحة لك، في هده التدوينة اود ان اشير الى بعض الدوال المفضلة لدي.

الدالة المساعدة data_get الخاصة باطار laravel

الدالة المساعدة data_get تمكنك من جلب القيمة من المصفوفة array او الكائن object عن طريق استخدام نقطة ترقيم، هده الدالة تعمل بنفس مبدأ array_get. يمكننا ايضا استخدام المعامل الثالث الاختياري لوضع قيمة افتراضية في حالة عدم العثور على المفتاح.

$array = ['albums' => ['rock' => ['count' => 75]]];

$count = data_get($array, 'albums.rock.count'); // 75
$avgCost = data_get($array, 'albums.rock.avg_cost', 0); // 0

$object->albums->rock->count = 75;

$count = data_get($object, 'albums.rock.count'); // 75
$avgCost = data_get($object, 'albums.rock.avg_cost', 0); // 0

ادا كنت تستخدم علامة * بين النقطتين، سيقوم Laravel بارجاع مصفوفة من النتائج

$array = ['albums' => ['rock' => ['count' => 75], 'punk' => ['count' => 12]]];
$counts = data_get($array, 'albums.*.count'); // [75, 12]

تسمح لك الدالة المساعدة data_get بالعثور على عناصر في المصفوفات والكائنات باستخدام نفس البنية، وبالتالي فهو أمر جيد يغميك عن التحقق من نوع المتغير الذي لديك قبل استخدامه.

الدالة المساعدة str_plural الخاصة باطار laravel

تقوم الدالة المساعدة str_plural بتحويل نص string الى صيغة الجمع الخاصة بها، حاليا الدالة str_plural تدعم اللغة الانجليزية فقط، المعامل التاني الاختياري يمكننا من تحديد صيغة الجمع او المفرد. كما ان str_plural تغنيك عن استعمال كود مشابه لهذا: {{ $count == 1 ? 'dog' : 'dogs' }}

str_plural('dog'); // dogs
str_plural('cat'); // cats

str_plural('dog', 2); // dogs
str_plural('cat', 1); // cat

str_plural('child'); // children
str_plural('person'); // people
str_plural('fish'); // fish
str_plural('deer', 2); // deer

الدالة المساعدة route الخاصة باطار laravel

تمكننا الدالة المساعدة route من تحديد عنوان URL باستخدام اسم المسار، المعامل التاني الاختياري يمكن استعاله لاضافة متلا رقم id الخاص بالرابط المطلوب.

Route::get('burgers', '[email protected]')->name('burgers');
route('burgers'); // http://example.com/burgers
route('burgers', ['order_by' => 'price']); // http://example.com/burgers?order_by=price

Route::get('burgers/{id}', '[email protected]')->name('burgers.show');
route('burgers.show', 1); // http://example.com/burgers/1
route('burgers.show', ['id' => 1]); // http://example.com/burgers/1

Route::get('employees/{id}/{name}', '[email protected]')->name('employees.show');
route('employees.show', [5, 'chris']); // http://example.com/employees/5/chris
route('employees.show', ['id' => 5, 'name' => 'chris']); // http://example.com/employees/5/chris
route('employees.show', ['id' => 5, 'name' => 'chris', 'hide' => 'email']); // http://example.com/employees/5/chris?hide=email

في حالة ادا كان المسار يحتوي على متغير واحد فمن الافضل تمرير المعامل التاني على شكل متغير

route('burgers.show', 1) 

بينما ادا كان يتكون من مجموعة من المتغيرات فمن الافضل تمريره على شكل مصفوفة

 route('employees.show', ['id' => 5, 'name' => 'chris']) 

الدالة المساعدة abort_if الخاصة باطار laravel

الدالة المساعدة abort_if تضهر خطأ ادا كانة قيمة الدالة التي تطبق بدخلها هي true, يمكننا استعمال المعامل الاختياري الثالث لوضع نص الاستجابة, بينما في المعامل الرابع الاختياري فيقبل مصفوفة لمعلومات الاستجابة

 abort_if(! Auth::user()->isAdmin(), 403);
abort_if(! Auth::user()->isAdmin(), 403, 'Sorry, you are not an admin');
abort_if(Auth::user()->isCustomer(), 403);

الدالة المساعدة optional الخاصة باطار laravel

تسمح لنا الدالة المساعدة optional من استعمال متغيرات و دوال الكائن, وفي خالة ما إذا كان الكائن المحدد فارغًا, الدوال والمتغيرات سترجع القيمة null بدلاً من التسبب في حدوث خطأ.

// User 1 exists, with account
$user1 = User::find(1);
$accountId = $user1->account->id; // 123

// User 2 exists, without account
$user2 = User::find(2);
$accountId = $user2->account->id; // PHP Error: Trying to get property of non-object

// Fix without optional()
$accountId = $user2->account ? $user2->account->id : null; // null
$accountId = $user2->account->id ?? null; // null

// Fix with optional()
$accountId = optional($user2->account)->id; // null

تعدل الدالة المساعدة optional خيارا مثاليًا عند استخدام كائنات قد لاتكون موجودة او عند استدعاء بيانات قد لاتكون متاحة عبر علاقات Eloquent.