当前位置:网站首页>Laravel service provider instance tutorial - create a service provider test instance
Laravel service provider instance tutorial - create a service provider test instance
2022-07-07 16:20:00 【Full stack programmer webmaster】
In a sense , Service providers are somewhat similar HTTP controller ,HTTP The controller is used to provide unified management for related route registration , The service provider is used to provide a unified binding place for related service containers , In addition, the service provider can also do some initialization and startup operations .Laravel Each core component of corresponds to a service provider , You can say that , The service provider is Laravel The heart of the , yes Laravel At the heart of , The core component class is registered here 、 Initialize for subsequent calls .
Since it's so important , So how to be in your own Laravel Define and use service providers in applications ?
1、 Define a service class
With Previous section About the service container , It's easy to understand service providers . Let's define a container bound test class TestService
, To constrain the definition of a class , We also define a contract interface TestContract
.
Definition TestContract
as follows :
<?php
namespace App\Contracts;
interface TestContract
{
public function callMe($controller);
}
Definition TestService
as follows :
<?php
namespace App\Services;
use App\Contracts\TestContract;
class TestService implements TestContract
{
public function callMe($controller)
{
dd('Call Me From TestServiceProvider In '.$controller);
}
}
2、 Create service provider
Next, we define a service provider TestServiceProvider
Used to register this class to the container . To create a service provider, you can use the following Artisan command :
php artisan make:provider TestServiceProvider
The order will be in app/Providers
Create one in the directory TestServiceProvider.php
file , We edit the file as follows :
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\TestService;
class TestServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
* @author LaravelAcademy.org
*/
public function register()
{
// Use singleton Binding singleton
$this->app->singleton('test',function(){
return new TestService();
});
// Use bind Bind instances to interfaces for dependency injection
$this->app->bind('App\Contracts\TestContract',function(){
return new TestService();
});
}
}
You can see that we use two binding methods , More binding method references Service container documentation .
3、 Register service provider
After defining the service provider class , Next, we need to register the service provider into the application , It's simple , Just append this class to the configuration file config/app.php
Of providers
Array :
'providers' => [
// Other service providers
App\Providers\TestServiceProvider::class,
],
4、 Test service providers
In this way, we can use the service provider in our application , To test the service provider, we first use Artisan Command to create a resource controller TestController
:
php artisan make:controller TestController
Then in the routing configuration file routes.php
Routing is defined in :
Route::resource('test','TestController');
Last to go TestController
Write test code in :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App;
use App\Contracts\TestContract;
class TestController extends Controller
{
// Dependency injection
public function __construct(TestContract $test){
$this->test = $test;
}
/**
* Display a listing of the resource.
*
* @return Response
* @author LaravelAcademy.org
*/
public function index()
{
// $test = App::make('test');
// $test->callMe('TestController');
$this->test->callMe('TestController');
}
...// Other controller actions
}
Then we go to the browser to visit http://laravel.app:8000/test
, Test and use respectively App::make
And dependency injection to resolve binding class calls callMe
Method output , Results the same , All are :
"Call Me From TestServiceProvider In TestController"
Okay , Be accomplished , Is it simple ?!
Besides ,Laravel Service providers also support delayed loading , For details, please refer to Service provider documentation .
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/113202.html Link to the original text :https://javaforall.cn
边栏推荐
- Application example of infinite list [uigridview]
- 95. (cesium chapter) cesium dynamic monomer-3d building (building)
- hellogolang
- php 自带过滤和转义函数
- Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例
- 分步式監控平臺zabbix
- The unity vector rotates at a point
- Shader basic UV operations, translation, rotation, scaling
- 2022第四届中国(济南)国际智慧养老产业展览会,山东老博会
- 95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
猜你喜欢
Three. JS introductory learning notes 18: how to export JSON files with Blender
You Yuxi, coming!
Leetcode-231-2的幂
企业级日志分析系统ELK
Description of vs common shortcut keys
pycharm 终端部启用虚拟环境
Good news! Kelan sundb database and Hongshu technology privacy data protection management software complete compatibility adaptation
Three. JS introductory learning notes 15: threejs frame animation module
强化实时数据管理,英方软件助力医保平台安全建设
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
随机推荐
laravel 是怎么做到运行 composer dump-autoload 不清空 classmap 映射关系的呢?
Three. JS introductory learning notes 18: how to export JSON files with Blender
MySQL数据库基本操作-DQL-基本查询
three.js打造酷炫下雪效果
A JS script can be directly put into the browser to perform operations
121. 买卖股票的最佳时机
应用程序和matlab的通信方式
SysOM 案例解析:消失的内存都去哪了 !| 龙蜥技术
prometheus api删除某个指定job的所有数据
Three. JS introductory learning notes 19: how to import FBX static model
Enterprise log analysis system elk
Logback日志框架第三方jar包 免费获取
There are many ways to realize the pause function in JS
2022第四届中国(济南)国际智慧养老产业展览会,山东老博会
Shader basic UV operations, translation, rotation, scaling
Excessive dependence on subsidies, difficult collection of key customers, and how strong is the potential to reach the dream of "the first share of domestic databases"?
Asyncio concept and usage
U3D_ Infinite Bessel curve
【知识小结】PHP使用svn笔记总结
The inevitable trend of the intelligent development of ankerui power grid is that microcomputer protection devices are used in power systems