Php 如何在laravel 5中启动服务提供商
我在Laravel 5中迈出了第一步,特别是在软件包开发方面。我使用这个软件包的目的是在每次请求中启动,总是这样 因此,我开始创建服务HelloWorldServiceProvider: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{
<?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,您可以修复它!非常感谢。请创建答案以接受它。