oop — внедрение интерфейсов в класс php

Итак, у меня есть следующий интерфейс, определенный для автомобиля:

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, так как вместо этого я получаю эту ошибку:

Неустранимая ошибка: невозможно переопределить класс FuelTank

Может кто-нибудь помочь мне понять, как правильно реализовать интерфейс выше и что здесь происходит?

0

Решение

Вы должны переименовать интерфейс FuelTank в FuelTankInterface и объявить класс FuelTank, который реализует FuelTankInterface. Интерфейс не может быть создан.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]