Поэтому у меня есть следующий интерфейс, определенный для автомобиля:инъекционных интерфейсов в класс 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);
Я получаю сообщение:
Fatal error: Cannot instantiate interface FuelTank
Я также не могу объявить класс FuelTank, как только я получаю эту ошибку:
Fatal error: Cannot redeclare class FuelTank
Может кто-нибудь помочь мне понять, как правильно реализовать интерфейс выше и что здесь происходит?
Вы не можете создать интерфейс как класс. Это $ car-> setFuelTank (новый FuelTank); неправильно. – Deepak