将接口注入php类

时间:2014-11-20 10:54:07

标签: php oop interface

所以我为汽车定义了以下界面:

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

有人可以帮我理解如何正确实现上面的界面以及这里发生了什么?

1 个答案:

答案 0 :(得分:1)

您应该将FuelTank接口重命名为FuelTankInterface,并声明一个实现FuelTankInterface的FuelTank类。无法实例化接口。