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
Symfony2:网站、移动网站和API的代码结构?_Symfony_Project Organization_Code Structure - Fatal编程技术网

Symfony2:网站、移动网站和API的代码结构?

Symfony2:网站、移动网站和API的代码结构?,symfony,project-organization,code-structure,Symfony,Project Organization,Code Structure,我想建立一个中型网站,其中还包括一个移动网站和一个API。 由于我已经有一些与Symfony的经验,我想建立在它之上的项目 然而,我不知道如何组织我的项目。也许有一些指导方针如何处理这个问题 将每个组件作为一个单独的捆绑包构建一个组件包是一个好主意吗?例如CoreBundle、APIBundle、WebsiteBundle和MobileWebsiteBundle,而CoreBundle将包含所有模型和验证以及其他捆绑控制器和视图 或者有完全不同的方法吗?您不需要将所有代码放入捆绑包中。事实上,您

我想建立一个中型网站,其中还包括一个移动网站和一个API。 由于我已经有一些与Symfony的经验,我想建立在它之上的项目

然而,我不知道如何组织我的项目。也许有一些指导方针如何处理这个问题

将每个组件作为一个单独的捆绑包构建一个组件包是一个好主意吗?例如CoreBundle、APIBundle、WebsiteBundle和MobileWebsiteBundle,而CoreBundle将包含所有模型和验证以及其他捆绑控制器和视图


或者有完全不同的方法吗?

您不需要将所有代码放入捆绑包中。事实上,您在那里放置的代码越多,就越需要将其耦合到框架

考虑将一些与Symfony无关的代码提取到单独的名称空间中,并将捆绑包视为PHP代码和Symfony框架之间的粘合剂

例如:

  • 顶点
      • 芹菜
      • 网站包
    • 实体
    • 工具
    • 小枝
如果您决定将实体置于捆绑包之外,则必须在app/config/config.yml中配置新映射:


将代码放在捆绑包中的优点是许多工具/捆绑包,如Assetic,Doctrine使用预先配置的捆绑包目录(
/Entity
/Resources/views
)来查找/加载资源。总是可以让这些工具在包空间之外加载资源,但这需要额外的配置。为实体配置ORM映射很简单。此外,我并不建议将所有东西都放在捆绑包之外。提取视图没有多大意义(但如果可用的话,细枝扩展也有意义)。您如何看待为API创建另一个名为ApiKernel的内核以及现有的捆绑包?例如,我将所有bundle存储在src/VendorName/中,并且它与PSR-0相关,但我希望将它们移动到名为
bundles
的目录中,如上面所示。我认为这是一种有趣的方式。将Bundle移动到Bundle名称空间应该不难(您必须修复名称空间和Bundle名称)。只有在需要分离时才创建一个apickernel。这取决于一个项目,对你来说听起来不错。您还需要单独的前端控制器和配置。
doctrine:
    orm:
        mappings:
            Bossa:
                type:       annotation
                is_bundle:  false
                dir:        %kernel.root_dir%/../src/Acme/Entity
                prefix:     Acme\Entity\
                alias:      Acme