所以我为汽车定义了以下界面:
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
有人可以帮我理解如何正确实现上面的界面以及这里发生了什么?
答案 0 :(得分:1)
您应该将FuelTank接口重命名为FuelTankInterface,并声明一个实现FuelTankInterface的FuelTank类。无法实例化接口。