流行框架第4版的发布标志着项目结构的资本变化.包括官方文档,注意以下有关代码捆绑的内容(http://symfony.com/doc/current/bundles.html):
在4.0之前的Symfony版本中,建议使用bundle组织您自己的应用程序代码.不再推荐使用此选项,并且仅应使用捆绑包在多个应用程序之间共享代码和功能.
在第2版和第3版中,捆绑执行了两项主要任务.1)如果开发人员或他们不同项目中的一组开发人员使用了一个大的重复功能,那么它可以在一个单独的包中取出并从项目转移到项目中.这种使用的一个很好的例子是任何项目中的用户系统.它包括用户,角色,权限(以及可能的其他),实体控制器,用于在应用程序中登录的控制器,注销应用程序(安全策略可能同时不同)以及用于查看的模板的模型.另一个很好的例子是行政小组,其基础是相同的.2)从逻辑的角度来看,Symfony在不同的目录中采用了单独的功能,因此,通过捆绑来命名空间.例如,在我过去的一个项目中,我划分了空间:用户管理系统,应用程序游戏化(社交网络目标),合作伙伴空间,地理环境(用于处理地图和按IP定义城市),支付交易环境.如下.
![Symfony [2-3]项目结构](https://i.stack.imgur.com/pg7kj.png)
在我的下一个项目中,我不想使用除Symfony4之外的任何内容来在实现其新功能时遵循框架的最佳实践.如果官方文档不再坚持创建捆绑包,我怎样才能在不同区域组织逻辑上独立的代码分离?如果模型的所有类都存储在同一目录中,则会产生混淆并增加在大型项目结构中查找所需文件的时间.这同样适用于模板以及其他所有内容.当我使用一个功能时,我只下载了此功能的目录.
现在,Symfony是否鼓励您根据自己的判断定义类,模板等的结构?
作为Symfony的新手并从4.2版开始,我遇到了与@DeveloperMobile相同的问题。
这是我的目录结构,基于《Symfony最佳实践指南》4.2版的建议
建议基本上说一下结构:
所以基本上它说:是的,您可以使用子文件夹在/ src中组织代码,但是具有特定功能的代码(例如Controller,Entity,Form,Repository等)应位于特定的Directory中。
root/
?? assets/
?? bin/
? ?? console
?? config/
?? public/
? ?? index.php
?? src/
?? Controller/
?? DefaultController.php
?? ...
?? Api/
? ?? ..
? ?? ..
?? Backend/
? ?? ..
? ?? ..
?? Entity/
?? Form/
?? Repository/
?? Twig/
?? Utils/
?? Kernel.php
?? tests/
?? templates/
?? translations/
?? var/
? ?? cache/
? ?? log/
?? vendor/
Run Code Online (Sandbox Code Playgroud)
这是上面链接中所有建议的列表:
不要创建任何捆绑包来组织您的应用程序逻辑。
(Symfony应用程序仍然可以使用第三方捆绑软件(安装在vendor /中)来添加功能,但是您应该使用PHP名称空间而不是捆绑软件来组织自己的代码。)
将与基础架构相关的配置选项定义为环境变量。在开发过程中,请在项目的根目录下使用.env和.env.local文件进行设置。
在.env文件中定义应用程序的所有环境变量
对于大多数项目,应将所有代码存储在src /目录中。在这里,您可以创建要组织事物的任何目录:
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |