ایجاد کردن Helper سفارشی در لاراول

همانطور که گفتم خود لاراول Helper های پیش فرض زیادی دارد که  از هسته خودش هم از آنها استفاده کرده  که بر اساس کاربردشان در دسته های مختلف گروه بندی شده اند و به احتمال زیاد شما هم از آنها در کد هایتان استفاده کرده اید. هلپر هایی مثل ()view یا ()route و یا ()asset

 لیست دسته بندی گروه ها به شرح ذیل می باشد:

Arrays Paths URLs Strings  و  Miscellaneous  که به جز مورد آخر که  به معنی متفرقه می باشد و برای  کارهای متداولی مثل debug وlogging و کار با توکن ها به کار می روند، کاربرد موارد دیگر رو  می توانیم از نام آنها حدس  بزنیم.

به عنوان یک مرجع کامل از Helper های لاراول مستندات خود لاراول بهترین گزینه می باشد.

ایجاد Helper سفارشی در لاراول

خب حالا که  درکی نسبی از helper ها و کاربرد آنها داریم اینجا به سراغ این می رویم که چطور helpers دلخواه خودمون رو بتونیم  اضافه کنیم  و از آن در همه جای اپلیکیشن استفاده کنیم. 

مثلا فرض کنید  که ما helper ای  میخواهیم اضافه  کنیم برای تولید یک کد رندوم برای استفاده به جای session یکتا

فایل جدیدی می سازیم در پوشه  app به نام  helpers.php  و فانکشن خودمون رو بدین صورت اضافه کنیم:

<?php

    /**
     * Generates a random unique number
     *
     * @return int
     */
   function generateSession()
 {
    return explode(' ',microtime())[1];
}

?>

خب حالا که helper خودمون ر و تعریف و ایجاد کردیم سوال این  می شود که حالا چطور باید آنها رو به اپلیکیشن خودمون اضافه کنیم و  autoload بشوند. که چندین راه برای این منظور وجود دارد.

اضافه کردن فایل به قسمت files در فایل composer.json

زمانی که تعداد کمی helper دارید و یک فایل کفایت می کند از این روش استفاده کنید.

"autoload": {

        "files": [
            "app/helpers.php"
        ]
}


اتولود کردن کل پوشه helpers در فایل composer.json

ممکن است شما  هم helper های خودتون رو در فایل های مختلف دسته بندی کنید  مثلا ArrayHelpers.php   یا ImageHelpers.php و ...  در این صورت کل پوشه رو autoload کنید.

 "autoload": {
        "classmap": [
            "database",
            "app/helpers"
        ],
  }

اضافه کردن service provider به لاراول و رجیستر کردن فایل helper در آن 

با این روش فایلهای هلپر  رو یه همراه دیگر وابستگی ها یا همون  dependancy ها رجیستر می کنید. این روش  خیلی  حرفه ای تر و قابل نگهداری تر است.

به طور مثال: 

app/Helpers/HelperServiceProvider.php

<?php
namespace App\Providers;
 
use Illuminate\Support\ServiceProvider;
 
class HelperServiceProviderextends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
 
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        require_once app_path() . '/Helpers/ArrayHelpers.php';
    }
}

و بعد از رجیستر کردن service provider در فایل کانفیگ app.php می تونید از آن ها به راحتی استفاده کنید.  

با استفاده از یکی از دو روش ابتدایی که مشکلی برای استفاده از آنها نداریم  در نهایت  می توانیم بدین صورت از تابع  ()generateSession استفاده کنیم:

generateSession();   // 1101549257123

نتیجه گیری

امروز با ساختار و نحوه تعریف helper  های جدید در لاراول آشنا شدیم، من مطمئن هستم به شما به عنوان توسعه دهنده حتما سراغ helper های سفارشی و جدید در لاراول خواهید رفت.  قطعا کاربرهای بیشتر و  بهتری برای تولید helper های جدید وجود دارند. خب امدوارم از مبحث امروز هم لذت برده باشید.