Làm thứ làm cho Laravel Request của bạn thú vị hơn

Laravel 5: Custom helper function

Laravel 5: Custom helper function

Hi các bạn,

Về helper function, Laravel đã có sẵn cho chúng ta 1 mớ, vd những cái ta hay sử dụng: env, redirect, route, asset,…

Tham khảo toàn bộ Helper Functions đã có sẵn: https://laravel.com/docs/5.5/helpers

Nhưng vì 1 lý do nào đó, bạn cũng sẽ cần tạo ra 1 helper function riêng cho mình.

Vậy để làm điều đó ra sao? Chúng ta cùng tìm hiểu nhé 😀

1/ Ví dụ thực tế

Ví dụ, mình có 1 cái hàm để encrypt id. Và function này sẽ được sử dụng rộng rãi trong controller/model mà mình muốn.

Để tránh DRY và Dup code, sẽ có 1 cách duy nhất là mình tạo ra 1 file chứa các hàm chung chung nhất mà có khả năng sử dụng lại cao vào chung.

Vậy nên từ tình huống trên, ta sẽ viết ra custom helper function để sử dụng.

Custom helper function khi được viết ra, ta có thể sử dụng tốt cả 2 nơi là: Controller và View, thậm chí trong Model.

2/ Tiến hành khởi tạo file .php để chứa các helper function

Bước 1: Tạo file php

Các bạn sẽ tạo file .php (tên bất kì) vào trong thư mục app.

Còn mình để dễ quản lý, mình sẽ tạo 1 thư mục trong app có tên là Supporters, tạo file có tên là Common.php

Vậy đường dẫn tới file của mình sẽ là: app/Supporters/Common.php

Bước 2: Khai báo

Và để khai báo, các bạn phải có đường dẫn tới file như mình đã bôi đen ở trên.

Ta sẽ ra thư mục root, mở file composer.json lên:

Các bạn sẽ thấy nhánh autoload như sau:

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

Ta sẽ thêm 1 thằng con cho nó như sau:

"files": [
            "app/Supporters/Common.php"
        ]

Thằng con của nó sẽ chứa 1 mảng string tên files, từng phần tử mảng đó sẽ là đường dẫn tới file .php của các bạn.

Tổng quan lại thì autoload giờ như sau:

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

Bước 3: Chạy composer để update

Ta sẽ chạy lệnh này để composer update:

composer dump-autoload

Sau khi chạy xong, các bạn đã có thể viết hàm trong file đã tạo và sử dụng ở cả 2 bên controller/view mà không cần phải use gì cả.

Note:

Đối với các bạn dựng 1 class riêng thì quy trình làm vẫn như trên, nhưng trong file .php các bạn phải định nghĩa namespace, vd:

namespace App\Supporters

Và để xài được ở Controller, ta sẽ phải use, như sau (vd mình tạo class là Helper):

use App\Supporters\Helper

Vậy thì trong controller, ta đã có thể khởi tạo Helper hoặc xài những hàm static của Helper (vd Helper::find($x))

Và nếu ta muốn xài ở views, bạn cần thêm như sau tại config/app.php tại aliases(gần cuối):

'aliases' => [ 
    ...
    ...
    'Helper' => App\Supporters\Helper::class,
 ]

Thêm xong, bên views ta đã có thể sử dụng class này, ưu tiên dựng các hàm static để truy xuất dễ dàng nhất, đỡ phải khởi tạo.

Vd: {{Helper::Status($info->status)}}

3/ Lời kết về Laravel 5: Custom helper function

Đôi khi, ta sẽ cần sử dụng tới thằng này, không ít cũng nhiều (mình cũng sử dụng :D), vậy nên biết thêm chút vẫn hay hơn.

Và để trải nghiệm điều này tốt nhất, các bạn nên sử dụng PHPStorm.

Bài viết về “Laravel 5: Custom helper function” của mình tới đây kết thúc.

Cám ơn các bạn đã quan tâm theo dõi 😀

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Bình luận qua Facebook