我正在迈出Laravel 5的第一步,特别是与包开发。我的这个包的目的是始终在每一个请求中引导。如何在laravel 5中启动服务提供程序5
于是,我开始创建服务HelloWorldServiceProvider:
<?php
namespace FacebookKiller\Modules\HelloWorld;
use Illuminate\Support\ServiceProvider;
class HelloWorldServiceProvider extends ServiceProvider{
protected $defer = false;
public function boot(){
dd('hello world at boot()')
}
public function register()
{
dd('hello world at register()')
}
}
其实,此文件是从根路径:
/Larave/app/Modules/HelloWorld/HelloWorldServiceProvider.php
然后,我为了添加服务编辑config/app.php
文件提供商
'Illuminate\Translation\TranslationServiceProvider',
'Illuminate\Validation\ValidationServiceProvider',
// my module
'FacebookKiller\Modules\HelloWorld\HelloWorldServiceProvider'
最后,为了测试是否dd()
叫,我已编辑routes.php
文件,如:
Route::get('test', function(){
return "Making a test request";
});
的结果是否定的。服务提供者未加载。根据文档:
推迟这样一个提供的载荷将提高应用程序的性能 ,因为它不是从文件系统加载上 每个请求。 要推迟一个供应商的加载,设置延迟属性为true
所以,我做了相反的设置protected $defer
到false
。但是dd()
函数没有被触发。 使用服务提供者类型很重要,因为通过这种方式我可以从它加载lang,视图和配置文件。
open storage/framework/services.json文件,你看到你的提供者类在这个文件中吗?如果没有,删除这个文件,laravel会再次生成它。 – 2015-02-06 07:50:42
@MartirosAghajanyan,你修好了!谢谢!请创建接受它的答案。 – manix 2015-02-06 08:18:17