实体对象上的Laravel依赖注入


Laravel dependency injection on entity object

我正在尝试使以下各项工作:我使用laravel框架和服务提供商来注入依赖关系。我创建了一个Session对象和一个Session接口,会话对象实现了会话接口。我这样做是因为我不想把会议与特定的框架实现结合起来(在本例中是laravel)。

我还有一个实体对象X,这个对象需要会话来从中获取一些数据。在构造函数中,它有ISession,这意味着它将由IOC注入。但我也需要使用新的操作符来创建这些实体对象。这意味着我需要通过会议的实施。我该如何避免这种情况?我可以使用App::make(),但这意味着我将laravel耦合到我的实体对象。

在Laravel上,我的所有接口都通过服务提供程序解析,在服务提供程序中,我将会话接口绑定到某个实现。

类似:

$this->app->bind('session-interface-namespace', function(){return SessionImplementation()})

一旦我这样做了,所有需要Session接口的类都会将我的Session实现解析为它们的"真正"依赖项。这样,我的业务/域逻辑就与我的基础架构逻辑分离了。

我要做的下一步是建立一个实体工厂。

希望有帮助,

IoC容器上绑定的目的是避免每次需要创建新实例时使用new运算符

因此,您必须在接口和您想要的实现之间进行绑定,然后使用:

$session = App::make('ISession');

以获得已绑定到接口的实现。

是的,您将把您的Laravel容器连接到您的应用程序,但Laravel是您的应用