تعریف helper function های اختصاصی در لاراول
در این مطلب قصد دارم به موضوعی بپردازم که ممکنه برای خیلی از توسعه دهندگان لاراول جای سوال باشه. چطوری یک برنامه نویس می تونه در لاراول helper function های اختصاصی تعریف کنه.
قبل از پرداختن به اصل موضوع، برای دوستانی که با این مفهوم آشنایی ندارن، می خوام این مفهوم رو کامل باز کنم و یک توضیح مختصر در مورد اون بدم تا بدونید helper function ها چی هستن!
در لاراول توابعی تعریف شده که به صورت سراسری در کل پروژه لاراول قابل دسترس هستند. توابعی مثل route یا dd که احتمالا خیلی از توسعه دهندگان لاراول با اون ها آشنایی دارن. برای فراخوانی توابع نیاز به نمونه سازی از کلاس خاصی ندارید و این توابع به صورت غیرشی گرا قابل استفاده هستند.
و اما چطوری می تونیم چنین توابعی رو به طور اختصاصی تعریف کنیم؟ در ادامه مقاله با من همراه باشید.
ایجاد یک فایل اختصاصی برای helper function ها
ابتدا ما باید یک فایل php ایجاد کنیم تا تمامی توابع رو درون اون تعریف کنیم. برای اینکار در یک مسیر دلخواه یک فایل با نام helpers.php (یا هر نامی دیگه که خودتون دوست دارید) ایجاد می کنیم. مثلا من در دایرکتوری app چنین فایلی رو ایجاد می کنم. بنابراین این فایل باید از طریق این مسیر قابل دسترس باشه: app/helpers.php
معرفی فایل ایجاد شده به composer
تا اینجا فایلی رو که حاوی توابع هست تعریف کردیم. اما توابع موجود در اون از طریق بخش های مختلف پروژه قابل دسترس نیستند. برای اینکه چنین کاری انجام بدیم باید به فایل composer.json بریم و مسیر فایل رو معرفی کنیم. بخشی از فایل composer.json که قصد اضافه کردن فایل helper function ها رو به اون داریم به صورت زیر هست:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
حالا برای اینکه فایل helper function ها رو به composer.json معرفی کنیم باید در زیر مجموعه autoload در فایل json آرایه زیر رو اضافه کنیم.
"files": [
"app/helpers.php"
],
تا اینجا محتویات فایل composer.json باید به صورت زیر باشه:
"autoload": {
"files": [
"app/helpers.php"
],
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
نکته قابل توجه اینه که در آرایه files هر تعداد فایل برای helper function ها که دوست داشته باشیم می تونیم اضافه کنیم.
پس از انجام این کار در command line دستور زیر رو وارد می کنیم:
composer dump-autoload
و متنظر می مونیم تا عملیات به اتمام برسه.
تعریف توابع
پس از اتمام عملیات تمام توابعی که در فایل ایجاد شده وجود داشته باشند در کل پروژه قابل دسترس هستند. به عنوان مثال اگر ما تابع زیر رو در فایل app/helpers.php تعریف کنیم، می تونیم هر جای پروژه لاراولی که مایل باشیم اون رو فراخوانی کنیم
if (! function_exists(‘sample_function’)) {
function sample_function() {
// ...
}
}
لازمه بگم که حتما باید از تابع !function_exists استفاده کنید تا اگر تابعی با همین نام قبلا تعریف شده باشه از تعریف مجدد اون خودداری بشه و از بروز خطا در سیستم جلوگیری بشه.
و سخن آخر
همون طور که اطلاع دارید php زبان برنامه نویسی هست که هم می تونه به صورت تابعی و هم به صورت شی گرا استفاده بشه و اجباری به استفاده از برنامه نویسی شی گرا به تنهایی در اون وجود نداره. در فریم ورک لاراول helper function ها تعبیه شدن برای اینکه کار برنامه نویس رو برای استفاده از هر دو روش راحت تر کنن و استفاده از چنین توابعی که می تونه به طور اختصاصی نوشته بشه باز هم کار کد نویسی شما رو راحت تر می کنه. اگر سوال نظر یا پیشنهادی در رابطه با این مقاله دارید خوشحال میشم از طریق بخش کامنت ها با من در ارتباط باشید.
مطلبی دیگر از این انتشارات
درباره Laravel Pipelines
مطلبی دیگر از این انتشارات
مدیریت حرفه ای فایل ها و تصاویر با پکیج medialibrary در لاراول
مطلبی دیگر از این انتشارات
پکیچ گروه بندی و دسترسی دادن به کاربران لاراول - userpermission