As you know, Container that's contain all Class of application as listeners, middleware ...... You can get any Class at anywhere to use in Laravel.
How to register Your Class into Container? That's provider
Service Providers are the central place of all Laravel application bootstraping.
<?php namespace App\Services;
class TrueMeService
{
public function get()
{
return 'TrueMeService is get data';
}
}
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\TrueMeService;
class TrueMeProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('services.trueme', function ($app) {
return new TrueMeService();
});
}
public function boot() {}
}
config/app.php
[
…,
'providers' =>
[
…,
App\Providers\TrueMeProvider::class,
],
]
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProviderController extends Controller
{
public function index()
{
dd(44444444, app(), app('services.trueme')->get() );
}
}
routes/web.php
Route::prefix('provider')->group(function () {
Route::get('/', 'ProviderController@index');
});
44444444
Illuminate\Foundation\Application {#2 ▼
#basePath: "D:\Projects\laravel70",
…,
#bindings: array:66 [
…
"services.trueme" => array:2 [▼
"concrete" => Closure($app) {#147 ▼
class: "App\Providers\TrueMeProvider"
this: App\Providers\TrueMeProvider {#146 ▶}
file:
"D:\Projects\laravel70\app\Providers\TrueMeProvider.php"
line: "17 to 19"
}
]
],
…
}
"TrueMeService is get data"