Symfony2用于Symfony1.4组织

时间:2012-08-30 07:09:12

标签: architecture symfony symfony-1.4

我使用Symfony1.4已超过2。5年。现在有一个新项目,客户希望将Symfony2用于此项目。

在研究Symfony2几个星期之后,我几乎没有什么东西要决定我的结构,理想情况下可以在Symfony1.4中正确组织,但我找不到完美的方法在Symfony2中做(可能是因为我对Symfony2的经验不多)

  1. 我在项目中有3个应用程序。我是否为这3个应用程序创建了捆绑包?或者我在src /目录中创建3个apps文件夹,并为各个应用程序的各个模块创建捆绑包?

  2. 如果我们为上面的Q1的每个应用程序创建捆绑包,我无法找到在同一捆绑中组织模块明智实体的方法。例如。我有模块前端的用户,事件,日历等模块,我如何在frontendBundle中组织模块?

  3. 所有应用程序的公共代码都存储在Symfony1.4的根lib /文件夹中,以后它可以在所有应用程序中访问。我无法理解在哪里有这个通用代码?我有内部供应商文件夹吗?或者供应商文件夹仅用于第三部分插件扩展,如Doctrine?

  4. 请Symfony2的一些专家澄清这些疑问吗?

1 个答案:

答案 0 :(得分:1)

  1. 您创建了3个不同的包

  2. 有两种方法。

    a)您可以为实体,存储库等(通常是业务逻辑)创建扁平结构中的所有内容。对于视图,配置,翻译等,您可以基于控制器结构创建单独的命名空间(以及目录)。例如

    src/
        COMPANY/
            App1Bundle/
                Controller/
                    UsersController.php
                    EventsController.php
                    ...
                Entity/
                    User.php
                    Even.php
                    ...
                Repository/
                    UserRepository.php
                    ...
                Model/
                    SomeServiceRelatedToUsers.php
                    SomeServiceRelatedToEvents.php
                    ...
                Resources/
                    views/
                        Users/
                            someUserView.twig.html
                        Events/
                            someEventsView.twig.html
    

    b)和第二种方法 - 为不同的逻辑部分创建单独的命名空间。例如

    src/
        COMPANY/
            App1Bundle/
                Controller/
                    Users/
                        UserSpecificController1.php
                        UserSpecificController2.php 
                    Events/
                        EventsSpecificController1.php
                        EventsSpecificController1.php
                     ...
                Entity/
                    Users/
                        User.php
                    Events/
                        Even.php
                    ...
                Repository/
                    Users/
                        UserRepository.php
                    ...
                Model/
                    Users/
                        SomeServiceRelatedToUsers.php
                    Events/
                        SomeServiceRelatedToEvents.php
                    ...
                Resources/
                    views/
                        Users/
                            someUserView.twig.html
                        Events/
                            someEventsView.twig.html
    

    我更喜欢第一个。

  3. 您可以为此创建单独的包,例如CommonBundle或sth。有些人喜欢用你创建公共代码作为供应商库的方式,然后创建bundle,它是你的库和symfony应用程序之间的桥梁。

  4. 以下是可能对您有用的链接: