Laravel进阶系列笔记--(三)Laravel 快速使用服务提供者
作者:温新
时间:2021-07-05
hi,我是温新,一名PHPer。
服务提供者是Laravel应用启动的中心。服务提供者与容器息息相关,不使用接口单独绑定容器没有任何意义。本篇文章将记录服务提供者的基础使用。
如何快速上手服务提供者的使用是本笔记的目的。
第一步:定义契约接口类
app
目录下手动创建Contracts
目录
// app/Contracts/TestContract.php
<?php
namespace App\Contracts;
// 契约接口类
interface TestContract
{
public function say(string $info):string;
}
第二步:定义服务实现契约接口类
app
目录下手动创建Services
目录
// app/Services/TestService.php
<?php
namespace App\Services;
use App\Contracts\TestContract;
// 实现契约接口类
class TestService implements TestContract
{
public function say(string $info):string
{
dd($info . '这里是自如初技术博客');
}
}
第三步:创建服务提供者
创建服务提供者
php artisan make:provider TestServiceProvider
绑定至服务容器
// TestServiceProvider.php
<?php
namespace App\Providers;
use App\Services\TestService;
use Illuminate\Support\ServiceProvider;
class TestServiceProvider extends ServiceProvider
{
public function register()
{
// 方式一
/*$this->app->bind('App\Contracts\TestContract', function(){
return new TestService();
});*/
// 方式二
$this->app->bind('App\Contracts\TestContract','App\Services\TestService');
}
public function boot()
{
}
}
第四步:注册服务提供者
文件位置:config/app.php
'providers' => [
App\Providers\TestServiceProvider::class,
],
第五步:测试服务提供者
创建用于测试的控制器
php artisan make:controller TestController
编写控制器方法
<?php
namespace App\Http\Controllers;
use App\Contracts\TestContract;
class TestController extends Controller
{
// 方式一
public function test(TestContract $test)
{
$test->say('www.ziruchu.com');
}
}
第六步:编写路由
// web.php
Route::get('test', 'TestController@test');
第七步:路由访问
根据自己定义的路由来访问
关于容器简单的演示就到这里。
我是温新
每天进步一点点,就一点点
请登录后再评论