Hướng dẫn tạo custom Helper Functions trong Laravel

Hướng dẫn tạo custom Helper Functions trong Laravel

Laravel cung cấp cho bạn nhiều helper functions tích hợp mà bạn có thể gọi chúng tại bất cứ nơi nào trong ứng dụng của mình. Chúng giúp cho bạn thuận tiện hơn để làm việc với mảng & đối tượng, đường dẫn, chuỗi, URL và các loại khác.

Mặc dù có nhiều hàm trợ giúp được xác định trong core laravel, bạn vẫn có thể tạo Helper Functions của riêng mình trong laravel để tránh lặp lại cùng một mã. Nó đảm bảo khả năng bảo trì tốt hơn của ứng dụng của bạn.

Trong bài viết này tôi sẽ hướng dẫn các bạn cách tạo custom Helper Functions trong Laravel.

I. Laravel Helper

Có rất nhiều helper có sẵn trong laravel mà bạn có thể sử dụng trong các project của mình. Chúng được nhóm dựa trên loại chức năng mà chúng cung cấp. Bạn có thể tìm hiểu thêm về Helper trong document của Laravel.

II. Tạo một helper trong laravel

Trong phần này, chúng ta sẽ thực hiện việc tạo một file Helper cho Laravel có thể được sử dụng tại bất cứ nơi nào trong một ứng dụng Laravel. Bạn có thể tùy ý sắp xếp vị trí của file Helpers của mình, tuy nhiên, tôi thích để các file Helper của mình trong thư mục app/Helpers. Trong hướng dẫn này, chúng tôi sẽ tạo một tệp trợ giúp nằm trong thư mục này.

1. Tạo file helper

Tạo file app/Helpers/Helper.php với nội dung như sau:

<?php

if (!function_exists('helper')) {
    function helper()
    {
        return 'Đây là Helper tùy chỉnh';
    }
}

Có một chú ý ở đây, đó là về hàm function_exists(), hàm này có ý nghĩa kiểm tra xem funtion helper mà chúng ta tạo đã tồn tại hay chưa, điều này sẽ giúp tránh trùng lặp hàm.

Sau khi tạo helper để có thể gọi chúng tại bất kỳ đâu (view, controller ...) bạn sẽ cần làm thêm bước tiếp theo dưới đây.

2. Sử dụng file Helper

Để có thể sử dụng file Helper tùy chỉnh chúng ta có 3 cách:

  • Autoload với composer
  • Sử dụng service provider
  • Sử dụng package

a. Autoload với composer

Đầu tiên các bạn mở file composer.json nằm trong dự án Laravel của bạn và tìm đến khóa autoload

composer.json

Sửa lại giống như sau:

"autoload": {
    "files": [
        "app/Helpers/Helper.php"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "classmap": [
        "database/seeds",
        "database/factories"
    ]
},

Sau khi sửa file composer.json và thêm vào mảng files, các bạn chạy tiếp lệnh sau:

composer dump-autoload

Bây giờ file helper của bạn sẽ được tự động tải và có thể gọi tại bất kỳ đâu trong dự án Laravel của bạn.

b. Sử dụng service provider

Đối với cách này sẽ rất hữu ích nếu các bạn có nhiều file helper. Đầu tiên các bạn cần tạo một service provider mới bằng lệnh sau:

php artisan make:provider HelperServiceProvider

Lệnh này sẽ tạo ra file app/Providers/HelperServiceProvider.php với nội dung như sau:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class HelperServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

Các bạn sửa lại hàm register thành giống như sau:

/**
* Register services.
*
* @return void
*/
public function register()
{
   foreach (glob(app_path() . '/Helpers/*.php') as $file) {
            require_once($file);
   }
}

Tiếp theo mở file config/app.php và thêm vào providers

App\Providers\HelperServiceProvider::class,

Như vậy Laravel sẽ tự động load tất cả các file php trong thư mục app/Helpers và bạn có thể bắt đầu sử dụng helper của mình tại bất kỳ đâu bạn muốn.

3. Sử dụng package

Với cách này bạn không cần làm gì cả. Chỉ đơn giản là cài package vào và xài. Tuy nhiên mình không khuyến khích cách này nên sẽ không nói nhiều về nó. Các bạn có thể tham khảo tại đây:  Laravel helpers package

Post Comment