Laravel进阶系列笔记--(三)Laravel 快速使用服务提供者

作者: 温新

分类: 【Laravel】

阅读: 1754

时间: 2021-08-11 14:51:54

作者:温新

时间: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');

第七步:路由访问

根据自己定义的路由来访问

关于容器简单的演示就到这里。

我是温新

每天进步一点点,就一点点

请登录后再评论