gpt4 book ai didi

php - 依赖注入(inject)和模型实体 - 正确的方法?

转载 作者:行者123 更新时间:2023-12-02 05:16:37 28 4
gpt4 key购买 nike

我的 symfony2 应用程序具有以下结构:

有一个服务data_provider,它从各种外部源获取数据并将其表示为实体对象。

有些对象有关系。目前,如果需要,我正在 controller 或 helper-services 中加载关系。

不是很方便,有时我想从我的实体对象中获取关系。为此,我需要访问 data_provider 服务。

我想实现像 doctrine 延迟加载这样的东西,正确的方法是什么?

一些明显的解决方案——在每个实体 instacne 中注入(inject) data_provider,或者注入(inject)一些静态属性,或者在服务中创建一些静态方法,或者使用 evenet 调度程序,但我不认为它是正确的方法

最佳答案

按照 Cerad 的建议对 ObjectManagerInterface 进行了一些研究,并找到了这段代码:https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Persistence/PersistentObject.php

PersistentObject 实现了 ObjectManagerAware 接口(interface),它具有存储 ObjectManager 的私有(private)静态属性。

所以我就这样结束了:

class DataProvider
{
public function __construct()
{
...
AbstractEntity::setDataProvider($this);
}
}

abstract class AbstractEntity
{
private static $dataProvider;
public static function setDataProvider() {...};
protected static function getDataProvider() {...};
}

关于php - 依赖注入(inject)和模型实体 - 正确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39647693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com