Gọi đến trình trợ giúp chức năng không xác định Laravel

Laravel cung cấp nhiều hàm trợ giúp tuyệt vời thuận tiện cho việc thực hiện những việc như làm việc với mảng, đường dẫn tệp, chuỗi và tuyến đường, trong số những thứ khác như hàm

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

2 được yêu thích

Bạn cũng có thể xác định tập hợp các hàm trợ giúp của riêng mình cho các ứng dụng Laravel và các gói PHP bằng cách sử dụng Trình soạn thảo để nhập chúng tự động

Nếu bạn chưa quen với Laravel hoặc PHP, hãy xem qua cách bạn có thể tạo các hàm trợ giúp của riêng mình để Laravel tự động tải

Tạo tệp Người trợ giúp trong Ứng dụng Laravel

Kịch bản đầu tiên bạn có thể muốn bao gồm các hàm trợ giúp của mình nằm trong ngữ cảnh của ứng dụng Laravel. Tùy thuộc vào sở thích của bạn, bạn có thể sắp xếp vị trí của [các] tệp trợ giúp của mình theo cách bạn muốn, tuy nhiên, đây là một số vị trí được đề xuất

  • 1"autoload": {

    2 "classmap": [

    3 "database/seeds",

    4 "database/factories"

    5 ],

    6 "psr-4": {

    7 "App\\": "app/"

    8 }

    9},

    10"autoload-dev": {

    11 "psr-4": {

    12 "Tests\\": "tests/"

    13 }

    14},

    3
  • 1"autoload": {

    2 "classmap": [

    3 "database/seeds",

    4 "database/factories"

    5 ],

    6 "psr-4": {

    7 "App\\": "app/"

    8 }

    9},

    10"autoload-dev": {

    11 "psr-4": {

    12 "Tests\\": "tests/"

    13 }

    14},

    4

Tôi muốn giữ của tôi trong

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

3 trong thư mục gốc của không gian tên ứng dụng

tự động tải

Để sử dụng các hàm trợ giúp PHP của bạn, bạn cần tải chúng vào chương trình của mình khi chạy. Trong những ngày đầu tiên trong sự nghiệp của tôi, không có gì lạ khi thấy loại mã này ở đầu tệp

1require_once ROOT . '/helpers.php';

Các chức năng PHP không thể được tự động tải. Tuy nhiên, chúng tôi có một giải pháp tốt hơn nhiều thông qua Composer hơn là sử dụng

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

6 hoặc

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

7

Nếu bạn tạo một dự án Laravel mới, bạn sẽ thấy một khóa

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

8 và

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

9 trong tệp

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

0

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

Nếu bạn muốn thêm tệp trợ giúp, trình soạn thảo có khóa

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

1 [là một mảng đường dẫn tệp] mà bạn có thể xác định bên trong

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

8

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

Khi bạn thêm một đường dẫn mới vào mảng

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

1, bạn cần kết xuất trình tải tự động

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

5

Bây giờ trên mọi yêu cầu những người trợ giúp. php sẽ được tải tự động vì Laravel yêu cầu trình tải tự động của Composer trong

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

4

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

7

Xác định chức năng

Mặc dù vậy, việc xác định các hàm trong lớp trợ giúp của bạn là một phần dễ dàng. Tất cả các tệp trợ giúp của Laravel được bao bọc trong một kiểm tra để tránh xung đột định nghĩa hàm

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

8

Điều này có thể trở nên phức tạp, bởi vì bạn có thể gặp phải các tình huống mà bạn đang sử dụng một định nghĩa hàm mà bạn không mong đợi dựa trên định nghĩa nào được xác định trước

Tôi thích sử dụng kiểm tra

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

5 trong trình trợ giúp ứng dụng của mình, nhưng nếu bạn đang xác định trình trợ giúp trong ngữ cảnh ứng dụng của mình, bạn có thể bỏ qua kiểm tra

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

5

Bằng cách bỏ qua kiểm tra, bạn sẽ thấy xung đột bất kỳ lúc nào người trợ giúp của bạn xác định lại chức năng, điều này có thể hữu ích

Trên thực tế, xung đột không có xu hướng xảy ra thường xuyên như bạn nghĩ và bạn nên đảm bảo rằng mình đang xác định tên hàm không quá chung chung. Bạn cũng có thể thêm tiền tố vào tên hàm của mình để làm cho chúng ít có khả năng xung đột với các phụ thuộc khác

Ví dụ về người trợ giúp

Tôi thích đường dẫn Rails và trình trợ giúp URL mà bạn nhận được miễn phí khi xác định một lộ trình tháo vát. Ví dụ: một route tài nguyên

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

7 sẽ hiển thị các route helper như

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

8, edit_photo_path`, v.v.

Khi tôi sử dụng định tuyến tài nguyên trong Laravel, tôi muốn thêm một số chức năng trợ giúp giúp xác định tuyến đường trong các mẫu của tôi dễ dàng hơn. Trong triển khai của mình, tôi muốn có một hàm trợ giúp URL mà tôi có thể chuyển mô hình Eloquent và lấy lại tuyến tài nguyên bằng cách sử dụng các quy ước mà tôi xác định, chẳng hạn như

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

3

Đây là cách bạn có thể xác định một

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

9 trong tệp

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

3 của mình [những cái khác trông tương tự]

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

6

Hàm

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

51 chỉ là một số mã có thể tái sử dụng mà các hàm định tuyến của trình trợ giúp sử dụng để dự đoán tên tài nguyên tuyến dựa trên quy ước đặt tên mà tôi thích hơn, đó là số nhiều của một mô hình kebab-case

Ví dụ: đây là một ví dụ về tên tài nguyên bắt nguồn từ mô hình

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

8

Sử dụng quy ước này, bạn sẽ xác định tuyến tài nguyên như vậy trong

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

52

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

0

Và sau đó trong các mẫu lưỡi kiếm của bạn, bạn có thể làm như sau

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

0

Cái nào sẽ tạo ra thứ gì đó giống như HTML sau

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

1

gói

Các gói Trình soạn thảo của bạn cũng có thể sử dụng tệp trợ giúp cho bất kỳ chức năng trợ giúp nào bạn muốn cung cấp cho các dự án sử dụng gói của bạn

Bạn sẽ thực hiện cách tiếp cận tương tự trong tệp

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

0 của gói, xác định khóa

1"autoload": {

2 "files": [

3 "app/helpers.php"

4 ],

5 "classmap": [

6 "database/seeds",

7 "database/factories"

8 ],

9 "psr-4": {

10 "App\\": "app/"

11 }

12},

1 với một mảng các tệp trợ giúp của bạn

Bạn bắt buộc phải thêm các kiểm tra

1"autoload": {

2 "classmap": [

3 "database/seeds",

4 "database/factories"

5 ],

6 "psr-4": {

7 "App\\": "app/"

8 }

9},

10"autoload-dev": {

11 "psr-4": {

12 "Tests\\": "tests/"

13 }

14},

55 xung quanh các chức năng của trình trợ giúp để các dự án sử dụng mã của bạn không bị hỏng do xung đột đặt tên

Bạn nên chọn tên hàm phù hợp, duy nhất cho gói của mình và cân nhắc sử dụng tiền tố ngắn nếu bạn sợ tên hàm của mình quá chung chung

Tìm hiểu thêm

Hãy xem tài liệu của Composer để tìm hiểu thêm về cách bao gồm các tệp và thông tin chung về các lớp tự động tải

Chủ Đề