يأتي Laravel مضمّنا مبدئيًّا بالكثير من المهام الشائعة في تطوير تطبيقات الويب؛ إلا أن المطوّر يحتاج لإضافة ميزات خاصّة لإطار العمل لاستخدامها في مشروعه، وهو ما يمكن فعله في Laravel عبر الدوّال المساعِدة المخصّصة.
هذا الدرس جزء من سلسلة تعلم Laravel والتي تنتهج مبدأ "أفضل وسيلة للتعلم هي الممارسة"، حيث ستكون ممارستنا عبارة عن إنشاء تطبيق ويب للتسوق مع ميزة سلة المشتريات. يتكون فهرس السلسلة من التالي:
- مدخل إلى Laravel 5.
- تثبيت Laravel وإعداده على كلّ من Windows وUbuntu.
- أساسيات بناء تطبيق باستخدام Laravel.
- إنشاء روابط محسنة لمحركات البحث (SEO) في إطار عمل Laravel.
- نظام Blade للقوالب.
- تهجير قواعد البيانات في Laravel.
- استخدام Eloquent ORM لإدخال البيانات في قاعدة البيانات، تحديثها أو حذفها.
- إنشاء سلة مشتريات في Laravel.
- الاستيثاق في Laravel.
- إنشاء واجهة لبرمجة التطبيقات API في Laravel.
- إنشاء مدوّنة باستخدام Laravel.
- استخدام AngularJS واجهةً أمامية Front end لتطبيق Laravel.
- الدوّال المساعدة المخصّصة في Laravel. (هذا الدرس)
- استخدام مكتبة Faker في تطبيق Laravel لتوليد بيانات وهمية قصدَ الاختبار.
عند استخدام الدالة 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.
صنف مزود الخدمة الخاص بالمساعِدات
تستخدَم مزودات الخدمة للتحميل التلقائي للأصناف كما أشرنا في درس إنشاء سلة مشتريات في Laravel 5؛ سنعرّف مزود خدمة لتحميل جميع الأصناف الموجودة في المجلّد app/Helpers
.
سنستخدم Artisan لإنشاء مزود خدمة كما فعلنا مع النماذج و التهجيرات، نفذ الأمر التالي:
php 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
مع تمرير المعطيين الضروريين إليها.
افتح المسار http://angulara.dev/func
لتجربة عمل الدالة المساعدة. ستحصل على النتيجة التالية:
Hsoub, Academy
خاتمة
تستخدَم الدوال المساعدة لتنفيذ مهام يكثُر استعمالها في تطبيقات الويب. يمكنك إنشاء دوال مساعدة مخصّصة وإضافتها إلى التطبيق. تفيد الدوال المساعدة كثيرا في تهيئة المخرجات وصياغتها ضمن قوالب Blade والاستغناء بالتالي عن معالجة البيانات داخل القوالب.
ترجمة -وبتصرّف- لمقال Laravel 5 Custom Helper لصاحبه Rodrick Kazembe.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.