使用Symfony和Doctrine的领域驱动设计实现

使用Symfony和Doctrine的领域驱动设计实现,symfony,dns,doctrine,Symfony,Dns,Doctrine,我是symfony的新手,我有一个关于在symfony中使用条令实现干净的域驱动设计的问题 在Zend framework one中,我的结构如下 模型文件夹 用户(数据库中的文件夹和表) Row.php(类名Model\u User\u文件夹用户中的行) Rowset.php(类名Model_User_文件夹用户中的行集) php(文件夹用户中的类名Model\u User\u Table) Repository.php(类名Model\u User\u文件夹用户中的存储库) php(文件夹用

我是symfony的新手,我有一个关于在symfony中使用条令实现干净的域驱动设计的问题

在Zend framework one中,我的结构如下

模型文件夹

用户(数据库中的文件夹和表)

Row.php(类名Model\u User\u文件夹用户中的行)

Rowset.php(类名Model_User_文件夹用户中的行集)

php(文件夹用户中的类名Model\u User\u Table)

Repository.php(类名Model\u User\u文件夹用户中的存储库)

php(文件夹用户中的类名Model\u User\u Service)

我希望使用条令在Symfony中创建类似的结构(我知道条令有自己的方式)

我的问题是,条令工具在AppBundle中创建实体文件夹和存储库文件夹,并将所有内容都放在这些文件夹中

我的愿望是在Symfony中创建

AppBundle

模型(文件夹)

用户(文件夹)

User.php//User文件夹中的实体

UserRepository.php//User文件夹中的存储库

我尝试更改以下代码

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
然后创建新的Enities,但它不起作用


请告知

我和你有同样的担忧,通常我会采用这种结构

Entity
  -- Model (here goes User.php)
  -- Repository (here goes UserRepository.php)
Services 
  -- Domain (my 100% business Logic, 100% covered by tests with mocks)
  -- FormBuilder (where I hydrate my formsType by their DTO etc..)
  -- ..etc..

因为我使用实体作为顶级目录,所以您需要的唯一配置是将实体/存储库移动到它们的目录中,并调整注释中的
repositoryClass

我的建议是停止与框架抗争,并以默认方式进行操作,至少最初是这样。一旦你熟悉了这个框架,你可能会想要改变它,或者它的工作方式可能会更有意义。我想知道在哪里存放我的服务类。我的服务类将与存储库通信。我不想直接从控制器使用存储库,因为这将在单元测试(创建模拟对象)中产生问题。大多数symfony代码示例直接与控制器中的存储库对话。您在github上有一些示例吗?它不在github上,但我会在回家后看看是否可以在其上放置一个基本的捆绑包结构。我知道自您发布@goto以来已经过了一段时间,但如果您有对示例代码的引用,这将非常有帮助。