الدوال
المساعدة المخصصة Custom Helpers في
Laravel 5
عند استخدام الدالة asset في قالب Blade فأنت تستدعي دالة مساعِدة مضمّنة في Laravel.
الدوال المساعدة هي دوال مبنية لتأدية أعمال اعتيادية ويمكن غالبا استخدامها في أي ملف من إطار العمل أو التطبيق. سنشرح في هذا الدرس كيفية بناء دوال مساعدة مخصّصة.
يغطي الدرس المواضيع التالية:
مجلّد
الدوال المساعِدة.
تعريف صنف مساعِد.
مزود الخدمة الخاص بالصنف المساعِد.
كنية الصنف المساعد.مجلد
الدوال المساعدة
سننشئ مجلّدا خاصّا بالأصناف التي ستعرّف
الدوال المساعدة داخل مجلد التطبيق app، نعطيه اسم Helpers. داخل مجلد
الدوال المساعدة app/Helpers ننشئ ملفا باسم MyFuncs.php لتعريف الصنف MyFuncs ونضيف إليه الشفرة المصدرية التالية:
<?php
namespace App\Helpers;
class MyFuncs {
public static function full_name($first_name,$last_name) {
return $first_name . ', '. $last_name;
}
}
تنشئ الشفرة أعلاه صنفا لتعريف الدالة
المساعدة full_name. نبدأ بتعريف فضاء أسماء لأصناف المساعدات داخل فضاء أسماء التطبيق:
namespace App\Helpers;
ثم نعرّف الصنف MyFuncs الذي توجد داخله الدالة
المساعدة full_name. الدالة
المساعدة full_name هي دالة ثابتة static تقبل سلسلتي محارف Strings ثم تلمّهما Concatenate.
صنف مزود الخدمة الخاص بالمساعِدات
تستخدَم مزودات الخدمة للتحميل التلقائي للأصناف كما أشرنا في درس p artisan make:provider HelperServiceProvider
ينشئ الأمر السابق ملفا باسم HelperServiceProvider على المسار /app/Providers؛ نفتحه لتحريره. عدّل الملف ليصبح كالتالي:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class HelperServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
foreach (glob(app_path().'/Helpers/*.php') as $filename){
require_once($filename);
}
}
}
نعرّف فضاء الأسماء الذي ينتمي إليه الصنف App\Providers ثم نستدعي صنف مزود الخدمة Illuminate\Support\ServiceProvider وهو صنف يمدده مزود الخدمة الذي نحن بصدد تعريفه.
تمهّد الدالة boot خدمات التطبيق Bootstrapping، أي تحميل الأصناف التي تعرّف الخدمات أثناء بدء التطبيق العمل. ثم يأتي دور الدالة register التي تحمّل محتويات المجلد
Helpers بسبر ملفاته وتحميلها الواحد تلو الآخر.
إعداد مزود خدمة المساعدات وكنية صنف المساعدات
نحتاج لإعلام إطار العمل
Laravel بوجود مزوّد الخدمة الذي أنشأناه. لذا سنفتح ملف إعداد التطبيق config/app.php ونضيف عنصرا جديدا إلى مصفوفة providers على النحو التالي:
App\Providers\HelperServiceProvider::class,
ثم ننتقل إلى مصفوفة الكنى aliases لإضافة كنية لصنف MyFuncs:
'MyFuncs' => App\Helpers\MyFuncs::class,
احفظ التعديلات.
استخدام المساعِدات المخصصة
ننشئ في ملف المسارات routes.php مسارا خاصّا لتجربة الدالة المساعدة:
Route::get('/func', function () {
return MyFuncs::full_name("Hsoub","Academy");
});
نستدعي الدالة MyFuncs::full_name مع تمرير المعطيين الضروريين إليها.