So Ive learned how to make simple service providers that call a helper method from a helper folder.
What I'm wondering is how to make a service provider that has the dependency of an already defined illuminate service. Specifically, the database service.
The following does not appear to be working, and I was under the impression that the boot method is called after all of the other services have been instantiated.
I'm a little confused at the moment.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\DatabaseServiceProvider;
use App\Helpers\FetchGlobal;
class FetchGlobalServiceProvider extends ServiceProvider
{
public function boot(DatabaseServiceProvider $db)
{
// do stuff with $db
return "test";
}
public function register()
{
}
}
According to the docs this seems like it should work?
https://laravel.com/docs/5.4/providers . (see Boot Method Dependency Injection)
You don't need a service provider instance .. you need the class that was created by service provider .. your code should look like
public function boot(\Illuminate\Support\Facades\DB $db)
{
// do stuff with $db
return "test";
}
because the database service provider register a db singleton
$this->app->singleton('db', function ($app) {
return new DatabaseManager($app, $app['db.factory']);
});
also you could use
$db = $app->make('db')
instead of injecting
Sign in to participate in this thread!
The Laravel portal for problem solving, knowledge sharing and community building.
The community