Поэтому я пытаюсь создать своего первого поставщика услуг и бесплатный фасад в Laravel.
Поставщик услуг:
<?php namespace Jbm\Providers;
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
use Jbm\Helpers\ReportGenerator;
class ReportGeneratorServiceProvider extends BaseServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = true;
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->bind('Jbm\Helpers\Contracts\ReportGeneratorContract', function($app){
return new ReportGenerator();
});
}
/**
* Add the Cors middleware to the router.
*
* @param Kernel $kernel
*/
public function boot(Request $request, Kernel $kernel)
{
//
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return array('jbm.reportGenerator');
}
}
Фасад:
<?php
namespace Jbm\Facades;
use Illuminate\Support\Facades\Facade;
class ReportGenerator extends Facade
{
protected static function getFacadeAccessor()
{
return 'jbm.reportGenerator';
}
}
Кажется, что каждый пакет, на который я смотрю, обрабатывает вещи по-разному. Одна вещь, которая меня смущает, это то, что должно идти в возврате getFacadeAccessor()
в Фасаде. В своем поставщике услуг я говорю, что он предоставляет jbm.reportGenerator
, а затем использует его в Фасаде, но я не знаю, как это связано с тем, что я зарегистрировал. Любая помощь будет принята с благодарностью.
Обновление:
Я решил добавить своего поставщика услуг и свой фасад в свой config/app.php, а затем попытался использовать его в контроллере, и он говорит: «Генератор отчетов не найден». Так что это явно не работает... не знаю, почему
Обновление 2:
После удаления точки в имени я теперь получаю Call to undefined method Jbm\Facades\ReportGenerator::parseConfig()
.