【发布时间】:2016-06-18 23:14:04
【问题描述】:
所以我正在尝试在 Laravel 中创建我的第一个服务提供者和免费的 Facade。
服务提供者:
<?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';
}
}
似乎我看到的每个包都以不同的方式处理事情。我感到困惑的一件事是在 Facade 中返回 getFacadeAccessor() 应该做什么。在我的服务提供商中,我说它提供jbm.reportGenerator,然后在 Facade 中使用它,但我不知道它如何与我注册的内容相关联。任何帮助将不胜感激。
更新:
我决定将我的服务提供者和我的外观添加到我的 config/app.php 中,然后尝试在控制器中使用它并显示“未找到报告生成器”。所以它显然不起作用......不知道为什么
更新 2:
删除名称中的点后,我现在得到Call to undefined method Jbm\Facades\ReportGenerator::parseConfig()。
【问题讨论】:
-
您可以尝试将 jbm.reportGenerator 重命名为仅 reportGenerator 吗?我不确定你是否可以使用这样的点
标签: php laravel facade service-provider