Laravel IoC绑定方法

时间:2015-10-28 11:42:30

标签: php laravel ioc-container

绑定给定Interface或Abstract类的实现时,e。克

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

laravel如何确定给定的实现 传递的接口/抽象类的实现之一

假设我有以下接口

IVehicle.php

namespace App;

interface IVehicle {
    public function getNumberOfWheels();
}

IBicycle.php

namespace App;

interface IBicycle extends IVehicle {

}

I4Wheeler.php

namespace App;

interface I4Wheeler extends IVehicle {

}

实现:

Bike.php

namespace App;

class Bike implements IBicycle{

    public function getNumberOfWheels(){
        return 2;
    }
}

Car.php

namespace App;

class Car implements I4Wheeler{

    public function getNumberOfWheels(){
        return 4;
    }
}

返回绑定方法:

$app->bind(
    App\IBicycle::class,
    App\Car::class
);

给出上述绑定我的问题是laravel如何验证或不验证Car是否是App\IBicycle的实现
界面?如果没有执行验证,那么在更一般意义上传递inteface / abstract类有什么用?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我认为你正在寻找Laravel Service Providers。您可以将实现绑定到接口。 IoC将查找这些绑定(在您的ServiceProviders中)以确定它应该使用哪个实现。