所以我为汽车定义了以下接口:
interface FuelTank
{
public function useFuel();
}
interface WaterTank
{
public function useWater();
}
interface CarInterface extends FuelTank, WaterTank
{
public function drive($miles);
public function setFuelTank(FuelTank $tank);
public function setWaterTank(WaterTank $tank);
}
我试图构建一个实现并符合CarInterface
的类,但是我在注入 FuelTank 和 Watertank 依赖项时遇到了问题。这是我想出的课程:
class Car implements CarInterface
{
protected $fuelTank;
protected $waterTank;
public function drive($miles)
{
return $miles;
}
public function useWater()
{
}
public function useFuel()
{
}
public function setFuelTank(FuelTank $tank)
{
$this->fuelTank = $tank;
}
public function setWaterTank(WaterTank $tank)
{
$this->waterTank = $tank;
}
}
现在,当我运行以下内容时:
$car = new Car;
$car->setFuelTank(new FuelTank);
我收到此消息:
致命错误:无法实例化接口油箱
我也无法声明类 FuelTank,因为我收到此错误:
致命错误:无法重新声明类油箱
有人可以帮助我了解如何正确实现上述接口以及这里发生了什么吗?
您应该将接口 FuelTank 重命名为 FuelTankInterface,并声明一个实现 FuelTankInterface 的类 FuelTank。无法实例化接口。