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