将心比心,方得人心~

Laravel 服务容器和服务提供者的用法

周洲 2021-05-14 16:48:01

*此文讲解绑定接口到实现的过程


1.创建服务提供者,此命令将在Providers目录下创建类TestServiceProvider

php artisan make:provider TestServiceProvider


2.在目录config下的app.php中找到providers添加:

App\Providers\TestServiceProvider::class,


3.app目录下分别添加DemoInterface.php、DemoTest1.php、DemoTest2.php

DemoInterface.php类代码:

<?php

namespace App\Service;

interface DemoInterface
{

    function demo1();

    function demo2();

}

DemoTest1.php类代码:

<?php

namespace App\Service;

class DemoTest1 implements DemoInterface
{

    public function demo1()

    {

        return 'demo1';

    }

    public function demo2()

    {

        return 'demo2';

    }

}


DemoTest2.php类代码:

<?php
namespace App\Service;

class DemoTest2 implements DemoInterface
{

    public function demo1()
    {

        return 'demo1的第二种实现';

    }

    public function demo2()

    {

        return 'demo2的第二种实现';

    }

}


4、在TestServiceProvider类找到register方法,添加下面代码:

$this->app->bind(DemoInterface::class, DemoTest1::class);


5、在Controllers目录添加控制器IndexController,写入以下代码:

<?php

namespace App\Http\Controllers;

use App\Service\DemoInterface;


class IndexController extends Controller
{

    protected $demo;

    function __construct(DemoInterface $demo){

        $this->demo=$demo;

    }


    public function test()

    {

        return $this->demo->demo1();

    }

}

访问控制器方法test

页面输出demo1


将第四步DemoTest1切换为DemoTest2

页面输出demo1的第二种实现




打赏

『微信打赏』

我是有底线的