Php 如何在laravel 5中启动服务提供商

Php 如何在laravel 5中启动服务提供商,php,package,laravel-5,Php,Package,Laravel 5,我在Laravel 5中迈出了第一步,特别是在软件包开发方面。我使用这个软件包的目的是在每次请求中启动,总是这样 因此,我开始创建服务HelloWorldServiceProvider: <?php namespace FacebookKiller\Modules\HelloWorld; use Illuminate\Support\ServiceProvider; class HelloWorldServiceProvider extends ServiceProvider{

我在Laravel 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()')
    }
}
然后,我编辑
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";
});
结果是否定的。未加载服务提供程序。根据文件:

延迟加载这样的提供程序将提高性能 因为它不是从上的文件系统加载的 每一个请求。 要延迟加载提供程序,请将defer属性设置为true

因此,我将相反的设置
protected$defer
设置为
false
。但不会触发
dd()
功能。
使用服务提供者类型很重要,因为这样我可以从中加载lang、视图和配置文件。

Delete
storage/framework/services.json
文件

Laravel将所有服务提供商数据缓存在此文件中。 调试服务提供程序时始终查看此文件

下面是关于服务提供者和services.json文件的非常有用的答案


删除
存储/framework/services.json
文件

Laravel将所有服务提供商数据缓存在此文件中。 调试服务提供程序时始终查看此文件

下面是关于服务提供者和services.json文件的非常有用的答案


/artisan clear已编译
这也起了作用。 找到这个解决方案后,我认为必须有一个
artisan
命令来完成这个任务。宾果,已经有了。查看一下它的代码,我发现除了清除已编译的类文件外,它还清除了
services.json

public function fire()
{
    if (file_exists($path = $this->laravel->storagePath().'/framework/compiled.php'))
    {
        @unlink($path);
    }

    if (file_exists($path = $this->laravel->storagePath().'/framework/services.json'))
    {
        @unlink($path);
    }
}

在应用程序的下一次引导中,将重新创建
services.json

/artisan clear已编译
这也起了作用。 找到这个解决方案后,我认为必须有一个
artisan
命令来完成这个任务。宾果,已经有了。查看一下它的代码,我发现除了清除已编译的类文件外,它还清除了
services.json

public function fire()
{
    if (file_exists($path = $this->laravel->storagePath().'/framework/compiled.php'))
    {
        @unlink($path);
    }

    if (file_exists($path = $this->laravel->storagePath().'/framework/services.json'))
    {
        @unlink($path);
    }
}

在应用程序的下一次引导中,将重新创建
services.json

打开storage/framework/services.json文件,您是否在该文件中看到您的提供者类?如果没有,请删除此文件,laravel将再次生成它。@MartirosAghajanyan,您可以修复它!非常感谢。请创建答案以接受它。打开storage/framework/services.json文件,您在该文件中看到您的提供者类了吗?如果没有,请删除此文件,laravel将再次生成它。@MartirosAghajanyan,您可以修复它!非常感谢。请创建答案以接受它。