【发布时间】:2016-04-26 21:24:35
【问题描述】:
我是 symfony 的新手,我有一个关于在 Symfony 中使用 Doctrine 实现干净的领域驱动设计的问题
在 Zend 框架一中,我的结构如下
模型文件夹
用户(数据库中的文件夹和表)
Row.php(User 文件夹中的类名 Model_User_Row)
Rowset.php(User 文件夹中的类名 Model_User_Rowset)
Table.php(User 文件夹中的类名 Model_User_Table)
Repository.php(User 文件夹中的类名 Model_User_Repository)
Service.php(User 文件夹中的类名 Model_User_Service)
我希望使用 Doctrine 在 Symfony 中创建类似的结构(我知道 Doctrine 有它自己的方式)
我的问题是教义工具在 AppBundle 中创建一个实体文件夹和存储库文件夹并将所有内容放在这些文件夹中。
我的愿望是在 Symfony 中创建
AppBundle
模型(文件夹)
用户(文件夹)
User.php //用户文件夹中的实体
UserRepository.php // 用户文件夹中的存储库
我尝试更改以下代码
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: false
mappings:
person:
type: annotation
dir: "%kernel.root_dir%/../src/AppBundle/Model/Person"
prefix: AppBundle\Model\Person
alias: AppBundle
is_bundle: false
然后创建新的实体,但它没有工作
请指教
【问题讨论】:
-
我的建议是停止与框架作斗争,并以默认方式进行,至少在最初是这样。熟悉框架后,您可能想要更改,或者它的工作方式可能更有意义。
-
我可以接受 Symfony 的标准方式。我想知道在哪里存储我的服务类。我的服务类将与存储库对话。我不想直接从控制器使用存储库,因为这会在单元测试(创建模拟对象)中产生问题。大多数 symfony 代码示例直接与控制器中的存储库对话。