Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture Symfony2确认应用程序和模块的自定义文件夹结构_Architecture_Symfony_Symfony 1.4 - Fatal编程技术网

Architecture Symfony2确认应用程序和模块的自定义文件夹结构

Architecture Symfony2确认应用程序和模块的自定义文件夹结构,architecture,symfony,symfony-1.4,Architecture,Symfony,Symfony 1.4,对我的一个结构使用Symfony2。我想让模块和与模块相关的各种文件从其他模块文件中抽象出来 例如,我有前端应用程序。在前端应用程序下,我有用户、库模块。我想将所有与用户相关的文件保存在一个位置,并将所有与gallery相关的文件保存在一个位置。通过这种方式,我在模块级实现了Symfony1.4中提供的抽象 下面是我在这里实现的文件夹结构 web/ admin.php frontend.php apps/ autoload.php #

对我的一个结构使用Symfony2。我想让模块和与模块相关的各种文件从其他模块文件中抽象出来

例如,我有前端应用程序。在前端应用程序下,我有用户、库模块。我想将所有与用户相关的文件保存在一个位置,并将所有与gallery相关的文件保存在一个位置。通过这种方式,我在模块级实现了Symfony1.4中提供的抽象

下面是我在这里实现的文件夹结构

    web/
       admin.php
       frontend.php

    apps/
        autoload.php # this autloads the common libaries/vendors for all application eg. CommonBundle
        admin/
               AppKernel.php
               AppAutoload.php # load application specific libraries
               bootstrap.php.cache
               config/
               cache/
               .
               .
               .
            frontend/
               AppKernel.php
                AppAutoload.php
               bootstrap.php.cache
               config/
               cache/
               .
               .
               .

    src/
        Admin/
            UserBundle/
                Controller/
                    UsersController.php
                Entity/
                    User.php
                Repository/
                    UserRepository.php
                Resources/
                    views/
                     indexUserView.twig.html
            DiaryBundle/
                Controller/
                    DiaryController.php
                Entity/
                    Diary.php
                Repository/
                    DiaryRepository.php
                Resources/
                    views/
                     indexDiaryView.twig.html
        Frontend/
            UserBundle/
                Controller/
                    UsersController.php
                Entity/
                    User.php
                Repository/
                    UserRepository.php
                Resources/
                    views/
                     indexUserView.twig.html
            DiaryBundle/
                Controller/
                    DiaryController.php
                Entity/
                    Diary.php
                Repository/
                    DiaryRepository.php
                Resources/
                    views/
                     indexDiaryView.twig.html
我对我上面的文件夹结构很有信心。但当我发现Symfony2社区支持在应用程序级别而不是模块级别创建捆绑包时,我想知道在模块级别创建捆绑包的利弊。在模块级创建时可能出现的陷阱是什么

我可以看到为模块提供捆绑包的许多优点

  • 一个模块的所有控制器、视图、模型位于同一位置,并从其他模块的控制器、模型、视图中抽象出来。这样,在一个模块上工作的人只需在一个文件夹中工作,而不必担心在模块2中(即Bundle2)进行的工作

  • 清除缓存可以在应用程序级别使用以下命令“仅针对前端应用程序清除缓存”

    shell>php应用程序/前端/控制台缓存:清除

  • 若您需要在前端应用程序中创建捆绑包,命令如下。它在src/frontend应用程序下创建UserBundle。它还在apps/frontend/AppKernel.php中注册捆绑包名称

    shell>php应用程序/frontend/console生成:bundle--namespace=frontend/userBundle--format=yml

  • 看来一切都很好。但似乎Symfony2社区不认为这种方法是正确的


    请建议在我的方法中使用循环孔?

    我认为你不应该这样做

    Symfony2中没有这样的东西
    模块
    。有一本食谱 这解释了Symfony2和symfony1之间的区别。我想你说的是不同的应用。您可以有不同的应用程序,但事实并非如此,您应该创建另一个项目并共享捆绑包

    我认为您想要实现的这个项目将破坏很多东西,您将无法再使用第三方捆绑包

    有一项倡议被称为使Symfony2的项目结构更加RAD友好,但是他们有很多问题,这个项目现在似乎已经死了

    引述他们的话:

    在当前的实现中,Symfony2几乎在任何地方都有硬编码的路径来捆绑资源。这意味着,为了更改文件夹结构,我们需要覆盖所有那些Symfony2命令、扩展和编译器传递。它在我们的代码库中创建了一个划分,并使用一些bundle引入了BC中断

    尼图。。 Symfony1.4和symfony2有很大区别。根据symfony2,您需要在src文件夹下生成应用程序,在这里,应用程序名称将是名称空间,在名称空间下,您可以创建在symfony1.4中称为模块的捆绑包。 命令包括:

    php应用程序/控制台生成:bundle--namespace=yournespace/yourBundle--format=yml php应用程序/控制台缓存:clear--env=prod--no debug 您可以根据需要创建应用程序