如何在业务逻辑中使用接口?例如,如果我有一个这样的网关接口:
<?php
interface Gateway()
{
function writeToDatabase();
function readFromDatabase();
}
?>
以及针对特定数据库的实现:
<?php
class MySQL implements Gateway
{
public function writeToDatabase()
{
//Write data to database here....
}
public function readFromDatabase()
{
//Read data from database here...
}
}
?>
如何在我的业务逻辑中使用网关接口而不具体引用 MySQL 类?我可以在类构造函数中键入提示接口,如下所示:
<?php
class BusinessClass
{
private $gateway;
public function __construct(Gateway $gateway)
{
$this->gateway = $gateway;
}
}
?>
但是我还没有找到一种方法来实例化一个使用 Gateway 接口的新对象,而无需说:
$gateway = new MySQL();
我宁愿不这样做,因为如果我决定为不同的数据库编写网关接口的另一个实现,我将不得不将我的业务逻辑中的所有硬引用从“MySQL”更改为新的实现。这甚至可能吗?