*此文讲解绑定接口到实现的过程
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的第二种实现