Không tìm thấy lớp nhà cung cấp Laravel

Các gói là cách chính để thêm chức năng vào Laravel. Các gói có thể là bất cứ thứ gì từ một cách tuyệt vời để làm việc với các ngày như Carbon hoặc một gói cho phép bạn liên kết các tệp với các mô hình Eloquent như Spatie Laravel Media Library

Có nhiều loại gói khác nhau. Một số gói độc lập, có nghĩa là chúng hoạt động với bất kỳ khung công tác PHP nào. Carbon và PHPUnit là ví dụ về các gói độc lập. Bất kỳ gói nào trong số này có thể được sử dụng với Laravel bằng cách yêu cầu chúng trong tệp

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

2 của bạn

Mặt khác, các gói khác được dành riêng để sử dụng với Laravel. Các gói này có thể có các tuyến, bộ điều khiển, chế độ xem và cấu hình dành riêng để nâng cao ứng dụng Laravel. Hướng dẫn này chủ yếu đề cập đến việc phát triển các gói dành riêng cho Laravel

Lưu ý về mặt tiền

Khi viết một ứng dụng Laravel, việc bạn sử dụng hợp đồng hoặc mặt tiền thường không thành vấn đề vì cả hai đều cung cấp mức độ kiểm tra cơ bản ngang nhau. Tuy nhiên, khi viết các gói, gói của bạn thường sẽ không có quyền truy cập vào tất cả các trình trợ giúp kiểm tra của Laravel. Nếu bạn muốn có thể viết các bài kiểm tra gói của mình như thể gói được cài đặt bên trong một ứng dụng Laravel điển hình, bạn có thể sử dụng gói Orchestral Testbench

Khám phá gói

Trong tệp cấu hình

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

3 của ứng dụng Laravel, tùy chọn

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

4 xác định danh sách các nhà cung cấp dịch vụ sẽ được tải bởi Laravel. Khi ai đó cài đặt gói của bạn, thông thường bạn sẽ muốn nhà cung cấp dịch vụ của mình được đưa vào danh sách này. Thay vì yêu cầu người dùng thêm nhà cung cấp dịch vụ của bạn vào danh sách theo cách thủ công, bạn có thể xác định nhà cung cấp đó trong phần

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

5 trong tệp

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

2 của gói của bạn. Ngoài các nhà cung cấp dịch vụ, bạn cũng có thể liệt kê bất kỳ mặt tiền nào bạn muốn đăng ký

"Barryvdh\\Debugbar\\ServiceProvider"

"Debugbar": "Barryvdh\\Debugbar\\Facade"

Khi gói của bạn đã được định cấu hình để khám phá, Laravel sẽ tự động đăng ký nhà cung cấp dịch vụ và mặt tiền của nó khi nó được cài đặt, tạo trải nghiệm cài đặt thuận tiện cho người dùng gói của bạn

Từ chối khám phá gói

Nếu bạn là người tiêu dùng của một gói và muốn tắt chức năng khám phá gói cho một gói, bạn có thể liệt kê tên gói trong phần

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

5 trong tệp

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

2 của ứng dụng của bạn

________số 8_______

Bạn có thể vô hiệu hóa tính năng khám phá gói cho tất cả các gói bằng cách sử dụng ký tự

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

9 bên trong chỉ thị

$value = config['courier.option'];

0 của ứng dụng của bạn

Các nhà cung cấp dịch vụ

Nhà cung cấp dịch vụ là điểm kết nối giữa gói của bạn và Laravel. Nhà cung cấp dịch vụ chịu trách nhiệm ràng buộc mọi thứ vào bộ chứa dịch vụ của Laravel và thông báo cho Laravel nơi tải tài nguyên gói như chế độ xem, cấu hình và tệp bản địa hóa

Một nhà cung cấp dịch vụ mở rộng lớp

$value = config['courier.option'];

1 và chứa hai phương thức.

$value = config['courier.option'];

2 và

$value = config['courier.option'];

3. Lớp cơ sở

$value = config['courier.option'];

4 nằm trong gói Trình soạn thảo

$value = config['courier.option'];

5, mà bạn nên thêm vào gói phụ thuộc của riêng mình. Để tìm hiểu thêm về cấu trúc và mục đích của các nhà cung cấp dịch vụ, hãy xem tài liệu của họ

Tài nguyên

Cấu hình

Thông thường, bạn sẽ cần xuất bản tệp cấu hình gói của mình lên thư mục

$value = config['courier.option'];

6 của ứng dụng. Điều này sẽ cho phép người dùng gói của bạn dễ dàng ghi đè các tùy chọn cấu hình mặc định của bạn. Để cho phép các tệp cấu hình của bạn được xuất bản, hãy gọi phương thức

$value = config['courier.option'];

7 từ phương thức

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ của bạn

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

Bây giờ, khi người dùng gói của bạn thực thi lệnh

$value = config['courier.option'];

9 của Laravel, tệp của bạn sẽ được sao chép vào vị trí xuất bản đã chỉ định. Khi cấu hình của bạn đã được xuất bản, các giá trị của nó có thể được truy cập giống như bất kỳ tệp cấu hình nào khác

$value = config['courier.option'];

Cảnh báo
Bạn không nên xác định bao đóng trong tệp cấu hình của mình. Chúng không thể được sắp xếp theo thứ tự chính xác khi người dùng thực hiện lệnh

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

0 Artisan

Cấu hình gói mặc định

Bạn cũng có thể hợp nhất tệp cấu hình gói của riêng mình với bản sao đã xuất bản của ứng dụng. Điều này sẽ cho phép người dùng của bạn chỉ xác định các tùy chọn mà họ thực sự muốn ghi đè trong bản sao đã xuất bản của tệp cấu hình. Để hợp nhất các giá trị tệp cấu hình, hãy sử dụng phương thức

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

1 trong phương thức

$value = config['courier.option'];

2 của nhà cung cấp dịch vụ của bạn

Phương thức

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

1 chấp nhận đường dẫn đến tệp cấu hình gói của bạn làm đối số đầu tiên và tên của bản sao tệp cấu hình của ứng dụng làm đối số thứ hai

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

Cảnh báo
Phương pháp này chỉ hợp nhất cấp độ đầu tiên của mảng cấu hình. Nếu người dùng của bạn xác định một phần mảng cấu hình đa chiều, các tùy chọn còn thiếu sẽ không được hợp nhất

tuyến đường

Nếu gói của bạn chứa các tuyến đường, bạn có thể tải chúng bằng phương pháp

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

4. Phương pháp này sẽ tự động xác định xem các tuyến của ứng dụng có được lưu vào bộ đệm hay không và sẽ không tải tệp tuyến của bạn nếu các tuyến đã được lưu vào bộ đệm

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

di cư

Nếu gói của bạn chứa các lần di chuyển cơ sở dữ liệu, bạn có thể sử dụng phương thức

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

5 để thông báo cho Laravel cách tải chúng. Phương thức

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

5 chấp nhận đường dẫn đến quá trình di chuyển gói của bạn làm đối số duy nhất của nó

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

Khi quá trình di chuyển gói của bạn đã được đăng ký, chúng sẽ tự động được chạy khi lệnh

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

7 được thực thi. Bạn không cần xuất chúng vào thư mục

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

8 của ứng dụng

bản dịch

Nếu gói của bạn chứa các tệp dịch, bạn có thể sử dụng phương pháp

* Register any application services.

__DIR__.'/../config/courier.php', 'courier'

9 để thông báo cho Laravel cách tải chúng. Ví dụ: nếu gói của bạn có tên là

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0, bạn nên thêm phần sau vào phương thức

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ của bạn

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

Bản dịch gói được tham chiếu bằng quy ước cú pháp

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

2. Vì vậy, bạn có thể tải dòng

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

4 của gói

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0 từ tệp

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

5 như vậy

echo trans['courier::messages.welcome'];

Xuất bản bản dịch

Nếu bạn muốn xuất bản các bản dịch gói của mình lên thư mục

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

6 của ứng dụng, bạn có thể sử dụng phương pháp

$value = config['courier.option'];

7 của nhà cung cấp dịch vụ. Phương thức

$value = config['courier.option'];

7 chấp nhận một loạt các đường dẫn gói và vị trí xuất bản mong muốn của chúng. Ví dụ: để xuất bản các tệp dịch cho gói

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0, bạn có thể thực hiện như sau

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

Bây giờ, khi người dùng gói của bạn thực thi lệnh

$value = config['courier.option'];

9 Artisan của Laravel, các bản dịch của gói của bạn sẽ được xuất bản tới vị trí xuất bản được chỉ định

Lượt xem

Để đăng ký chế độ xem gói của bạn với Laravel, bạn cần cho Laravel biết vị trí của chế độ xem. Bạn có thể thực hiện việc này bằng cách sử dụng phương pháp

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

1 của nhà cung cấp dịch vụ. Phương thức

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

1 chấp nhận hai đối số. đường dẫn đến các mẫu xem của bạn và tên gói của bạn. Ví dụ: nếu tên gói của bạn là

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0, bạn sẽ thêm phần sau vào phương thức

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ của mình

"barryvdh/laravel-debugbar"

0

Chế độ xem gói được tham chiếu bằng quy ước cú pháp

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

5. Vì vậy, sau khi đường dẫn chế độ xem của bạn được đăng ký tại nhà cung cấp dịch vụ, bạn có thể tải chế độ xem

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

6 từ gói

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0 như vậy

"barryvdh/laravel-debugbar"

1

Ghi đè lượt xem gói

Khi bạn sử dụng phương pháp

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

1, Laravel thực sự đăng ký hai vị trí cho chế độ xem của bạn. thư mục

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

9 của ứng dụng và thư mục bạn chỉ định. Vì vậy, sử dụng gói

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0 làm ví dụ, trước tiên, Laravel sẽ kiểm tra xem phiên bản tùy chỉnh của chế độ xem đã được nhà phát triển đặt trong thư mục

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

1 chưa. Sau đó, nếu chế độ xem chưa được tùy chỉnh, Laravel sẽ tìm kiếm thư mục chế độ xem gói mà bạn đã chỉ định trong lệnh gọi tới

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

1. Điều này giúp người dùng gói dễ dàng tùy chỉnh/ghi đè chế độ xem gói của bạn

Chế độ xem xuất bản

Nếu bạn muốn cung cấp chế độ xem của mình để xuất bản lên thư mục

* Bootstrap any package services.

$this->loadMigrationsFrom[__DIR__.'/../database/migrations'];

9 của ứng dụng, bạn có thể sử dụng phương pháp

$value = config['courier.option'];

7 của nhà cung cấp dịch vụ. Phương thức

$value = config['courier.option'];

7 chấp nhận một loạt các đường dẫn xem gói và các vị trí xuất bản mong muốn của chúng

"barryvdh/laravel-debugbar"

2

Bây giờ, khi người dùng gói của bạn thực thi lệnh Artisan của Laravel, các chế độ xem gói của bạn sẽ được sao chép đến vị trí xuất bản được chỉ định

Xem thành phần

Nếu bạn đang xây dựng một gói sử dụng các thành phần Blade hoặc đặt các thành phần trong các thư mục không thông thường, bạn sẽ cần đăng ký thủ công lớp thành phần của mình và bí danh thẻ HTML của nó để Laravel biết tìm thành phần đó ở đâu. Thông thường, bạn nên đăng ký các thành phần của mình theo phương pháp

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ gói của bạn

"barryvdh/laravel-debugbar"

3

Khi thành phần của bạn đã được đăng ký, nó có thể được hiển thị bằng bí danh thẻ của nó

Thành phần gói tự động tải

Ngoài ra, bạn có thể sử dụng phương thức

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

8 để tự động tải các lớp thành phần theo quy ước. Ví dụ: một gói

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

9 có thể có các thành phần

echo trans['courier::messages.welcome'];

0 và

echo trans['courier::messages.welcome'];

1 nằm trong không gian tên

echo trans['courier::messages.welcome'];

2

"barryvdh/laravel-debugbar"

4

Điều này sẽ cho phép sử dụng các thành phần gói theo không gian tên nhà cung cấp của họ bằng cách sử dụng cú pháp

echo trans['courier::messages.welcome'];

3

"barryvdh/laravel-debugbar"

5

Blade sẽ tự động phát hiện lớp được liên kết với thành phần này bằng cách đặt pascal vào tên thành phần. Các thư mục con cũng được hỗ trợ bằng ký hiệu "dấu chấm"

Thành phần ẩn danh

Nếu gói của bạn chứa các thành phần ẩn danh, chúng phải được đặt trong thư mục

echo trans['courier::messages.welcome'];

4 của thư mục "lượt xem" của gói của bạn [như được chỉ định bởi ]. Sau đó, bạn có thể hiển thị chúng bằng cách thêm tiền tố vào tên thành phần với không gian tên chế độ xem của gói

"Giới thiệu" Artisan Command

Lệnh

echo trans['courier::messages.welcome'];

6 Artisan tích hợp sẵn của Laravel cung cấp bản tóm tắt về cấu hình và môi trường của ứng dụng. Các gói có thể đẩy thông tin bổ sung vào đầu ra của lệnh này thông qua lớp

echo trans['courier::messages.welcome'];

7. Thông thường, thông tin này có thể được thêm vào từ phương pháp

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ trọn gói của bạn

"barryvdh/laravel-debugbar"

6

lệnh

Để đăng ký các lệnh Artisan của gói của bạn với Laravel, bạn có thể sử dụng phương thức

echo trans['courier::messages.welcome'];

9. Phương thức này mong đợi một mảng tên lớp lệnh. Khi các lệnh đã được đăng ký, bạn có thể thực thi chúng bằng Artisan CLI

"barryvdh/laravel-debugbar"

7

Tài sản công

Gói của bạn có thể có các nội dung như JavaScript, CSS và hình ảnh. Để xuất bản những nội dung này vào thư mục

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

0 của ứng dụng, hãy sử dụng phương pháp

$value = config['courier.option'];

7 của nhà cung cấp dịch vụ. Trong ví dụ này, chúng tôi cũng sẽ thêm thẻ nhóm nội dung

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

0, thẻ này có thể được sử dụng để dễ dàng xuất bản các nhóm nội dung có liên quan

"barryvdh/laravel-debugbar"

8

Bây giờ, khi người dùng gói của bạn thực hiện lệnh

$value = config['courier.option'];

9, nội dung của bạn sẽ được sao chép vào vị trí xuất bản đã chỉ định. Vì người dùng thường cần ghi đè nội dung mỗi khi gói được cập nhật, nên bạn có thể sử dụng cờ

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

4

"barryvdh/laravel-debugbar"

9

Xuất bản nhóm tệp

Bạn có thể muốn xuất bản các nhóm nội dung gói và tài nguyên riêng biệt. Chẳng hạn, bạn có thể muốn cho phép người dùng của mình xuất bản các tệp cấu hình của gói mà không bị buộc phải xuất bản nội dung của gói. Bạn có thể làm điều này bằng cách "gắn thẻ" cho họ khi gọi phương thức

$value = config['courier.option'];

7 từ nhà cung cấp dịch vụ của gói. Ví dụ: hãy sử dụng các thẻ để xác định hai nhóm xuất bản cho gói

* Bootstrap any package services.

$this->loadRoutesFrom[__DIR__.'/../routes/web.php'];

0 [

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

7 và

* Bootstrap any package services.

$this->loadTranslationsFrom[__DIR__.'/../lang', 'courier'];

__DIR__.'/../lang' => $this->app->langPath['vendor/courier'],

8] theo phương pháp

$value = config['courier.option'];

3 của nhà cung cấp dịch vụ của gói

* Bootstrap any package services.

__DIR__.'/../config/courier.php' => config_path['courier.php'],

0

Giờ đây, người dùng của bạn có thể xuất bản các nhóm này một cách riêng biệt bằng cách tham chiếu thẻ của họ khi thực hiện lệnh

$value = config['courier.option'];

9

Chủ Đề