Я хочу добавить поставщика услуг в laravel 11, но я не уверен, как добавить его с помощью laravel 11. Как и в предыдущей версии laravel, он добавляется в файл config/app.php, но в laravel 11 его необходимо добавить в packageServiceProvider в папке поставщиков. Ниже мой код, скажите, пожалуйста, если я где-то ошибаюсь..
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class PaytmWalletServiceProvider extends ServiceProvider
{
/**
* All of the container bindings that should be registered.
*
* @var array
*/
public $bindings = [
ServerProvider::class => Anand\LaravelPaytmWallet\PaytmWalletServiceProvider::class,
];
/**
* Register services.
*/
public function register(): void
{
//
}
/**
* Bootstrap services.
*/
public function boot(): void
{
//
}
}
Да, я импортировал класс PaytmWalletServiceProvider в файл поставщиков.
Возникают ли у вас какие-либо ошибки, связанные с привязкой? например BindingResolutionException?
Поставщики услуг могут и могут быть размещены где угодно. Теперь они зарегистрированы в файле boostrap/providers.php
вместо config/app.php, хотя старый стиль все равно должен работать.
@Mit Kathrotia, я не получил никакой ошибки, но как мне узнать, что она зарегистрирована и успешно опубликована.
@apokryfos, я уже зарегистрировал этот класс в файле boostrap/providers.php и упоминал об этом ранее.
Я не уверен, что понимаю вас здесь. Вы упоминаете такие вещи, как «опубликовано», подразумевая, что это предназначено для разработки пакетов, но вы также используете config/app.php или bootstrap/providers.php, которые не предназначены для использования поставщиками услуг, исходящими из сторонних пакетов. Каков ваш вариант использования здесь?
Моя цель регистрации и публикации класса поставщика — использовать сторонний пакет в моем приложении.
Anand\LaravelPaytmWallet
, упомянутый в вашем коде (я предполагаю, что вы имеете в виду именно его), поддерживает обнаружение пакетов Laravel, поэтому поставщик услуг и псевдонимы должны автоматически регистрироваться Laravel. Вам не придется регистрировать его самостоятельно. Фактически, большинство пакетов, написанных для Laravel, написаны таким образом, чтобы это поддерживать.
Итак, следует ли мне удалить провайдера PaytmWalletServiceProvider class
из папки и файла провайдера?
В предыдущей версии Laravel провайдеры регистрировались в файле config/app.php
. Но в Laravel 11.x большинство конфигураций перенесены в каталог /bootstrap
.
В Laravel 11.x и более поздних версиях файл bootstrap/providers.php
возвращает массив, содержащий всех провайдеров, которые будут зарегистрированы в вашем приложении.
<?php
return [
App\Providers\AppServiceProvider::class,
...AllYourProvders
];
Сначала попробуйте импортировать свой ServerProvider, а затем убедитесь, что вы указали правильный путь к PaytmWalletServiceProvider.