Symfony2有着很多的命名约定,这一点大家可能在阅读Symfony2Book中已经看到了。那么Symfony2到底有多少命名约定呢,它们的命名约定分别是什么呢?由于Symfony2中不同组件的命名约定各不相同,所以很有必要将各种不同的命名约定都做一个梳理。下面是本人梳理出来的命名约定,如果在以后碰到这里没有的会再继续完善,也欢迎各位兄弟指出丢失的命名约定。

Bundle命名约定

Bundle还是一个PHP名称空间。该名称空间必须遵循PHP5.3名称空间和类名的技术互操作性标准:它由供应商段开始,后面接着0或更多的类别段,结束是名称空间的简称,必须以Bundle后缀结束。Bundle的类名必须遵循以下几个简单的规则:

  • 只能用字母数字和下划线;
  • 使用驼峰命名法;
  • 使用描述性的缩写名(不多于2个单词);
  • 名称的前缀为供应商(或可选的类别名称空间);
  • 名称必须以Bundle结尾。

如:

名称空间 Bundle类名
Acme\Bundle\BlogBundle AcmeBlogBundle
Acme\Bundle\Social\BlogBundle AcmeSocialBlogBundle
Acme\BlogBundle AcmeBlogBundle

控制器命名约定

控制器类名必须遵循以下几个简单的规则:

  • 使用驼峰命名法;
  • 名称必须以Controller结尾;
  • 其方法必须以Action结尾;

在路由文件中控制器的命名约定如下:

  1. bundle名:控制器类:方法名

例如,在路由中_controller参数值为AcmeBlogBundle:Blog:show,那么它所代表的是:

Bundle名 控制器类 方法名
AcmeBlogBundle BlogController showAction

路由命名约定

路由文件位于app/config/routing.yml,如果要导入其它路由文件,该被导入路由文件的命名约定如下:

  1. resource: "@Bundle类名/Resources/config/routing.yml"

例如,在路由文件中resource: "@AcmeHelloBundle/Resources/config/routing.yml"语句所代表的是:导入AcmeHelloBundle中的路由文件。

模板命名约定

模板的名称约定如下:

  1. bundle:controller:template:这个语法用于特定页面的特定模板。该字符串被冒号(:)分隔成三个部分,以AcmeBlogBundle:Blog:index.html.twig为例,其含义如下:

    • AcmeBlogBundle(bundle):模板位于AcmeBlogBundle目录之中(如src/Acme/BlogBundle)
    • Blog(controller):指定模板位于Resources/views目录中的Blog子目录下
    • index.html.twig(template):文件名叫index.html.twig
假定AcmeBlogBundle位于src/Acme/BlogBundle目录,那么布局的最终路径应该是src/Acme/BlogBundle/Resources/views/Blog/index.html.twig

bundle::template:这个语法指定了一个Bundle的基本模板。以AcmeBlogBundle::layout.html.twig为例,因为中间部分 “controller”被忽略了(如Blog),模板路径位于AcmeBlogBundle中的Resources/views /layout.html.twig。 ::template:这个语法指定了一个应用程序范围的模板或布局。注意该字符串由两个冒号(::)开始,意思是bundle和 controller部分被忽略。这意味着该模板没有位于任何Bundle之中,因此它应该位于app/Resources/views/目录中。

翻译命名约定

Symfony2可以根据翻译文件的命名约定来确定翻译的细节。每个消息文件必须按照domain.locale.loader这种模式命名:

  • domain: 可选,用来按组来组织消息(如admin、navigation或缺省消息),参见使用消息域;
  • locale: 翻译的语言环境(如:en_GB、en等)。所谓语言环境基本上是指用户语言和国家。它可以是字符串,然后你的应用程序可以用它来管理翻译和其它不同的格式(如货币格式)。我们建议使用ISO639-1语言代码,加上一个下划线(_),然后再加上ISO3166国家代码(如:fr_FR对应法语/法国);
  • loader: Symfony2如何引导和分析文件(如:xliff、php或yml)。

事件命名约定

唯一的事件名可以是任意字符串,但最好能够遵循一些简单的命名约定:

  • 只使用小写字母、数字、点号(.)和下划线(_);
  • 名称空间的前缀后跟点号(如:core.);
  • 名字后面跟动词,表明采取什么动作(如:request)。

这里有一些推荐的事件名示例:

  • core.response
  • form.pre_set_data
本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/594498,如需转载请自行联系原作者

Symfony2中的命名约定相关推荐

  1. php维护页面,php – Symfony2中的“维护网站”页面

    我跟着这个 tutorial.这非常简单直接. 这是我所需要的.您只需更改参数然后清除prod缓存,您仍然可以在dev或测试环境中访问该应用程序. 在你的parameters.yml中添加: para ...

  2. symfony2中一维码和二维码使用

    底层service代码 namespace AppBundle\Service; use AppBundle\Exception\BaseException; use BG\BarcodeBundle ...

  3. Symfony2Book03:使用Symfony2创建页

    原文出处:http://symfony.com/doc/current/book/page_creation.html 原文作者:Symfony.com 授权许可:创作共用协议 翻译人员:FireHa ...

  4. symfony2项目访问app_dev.php不显示debug工具栏的问题

    2019独角兽企业重金招聘Python工程师标准>>> 当在symfony2中比如添加一个bundle后,访问app_dev.php时不会显示底部debug工具栏,一种情况是模板中没 ...

  5. Symfony2学习笔记之HTTP Cache

    富web应用程序的本质意味着它们的动态.无论你的应用程序多么有效率,每个请求比起静态文件来说总会存在很多的耗费.对于大多数web程序来 说,这没什么. Symfony2非常的轻快,无论你做些严重超载的 ...

  6. Symfony2 学习笔记之模板使用

    我们知道,controller负责处理每一个进入Symfony2应用程序的请求.实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用.当一个controller需 ...

  7. Symfony2模版引擎使用说明手册

    一.基本使用 {{ demo }}输出一个demo变量; {% func %}通常是包含一个twig函数例如 for; 举个for循环的例子: {% for i in 0..10 %} <em& ...

  8. Symfony2插件StofDoctrineExtensionsBundle的使用说明

    原文出处:StofDoctrineExtensionsBundle自带的index.rst 原文作者:gediminasm.org 授权许可:创作共用协议 翻译人员:FireHare 校对人员:Fir ...

  9. 听 Fabien Potencier 谈Symfony2 之 《What is Symfony2 ?》

    Symfoy2 是什么? PHP世界里又一广受关注的web MVC框架? Fabien Potencier 却不这么说! Fabien Potencier这样定义Symfoy2 是个什么东西: 首先, ...

最新文章

  1. ef mysql 插件_EF Core 插件 —— ToSql
  2. Eval()特殊绑定
  3. 我在Suse 11 Sp3上使用anaconda安装TensorFlow的过程记录
  4. 【博客搬家旧文】leetcode 771. Jewels and Stones
  5. android屏幕适配库,Android屏幕适配之布局设置(二)
  6. 未来计算机将具有图像识别 定理证明,[单选] 低温计与高温计所测温度的分界线为()。...
  7. 浅谈Opencl四大模型之Platform model
  8. 吴恩达深度学习 —— 3.11 随机初始化
  9. debian linux vnc,Debian 如何配置安装Xfce桌面+VNC远程桌面服务
  10. struts2 在线用户记录
  11. 【POJ3614】Sunscreen
  12. LINUX下载编译FreeType
  13. linux上的甘特图软件,甘特图软件这么好用,可惜很多人不知道
  14. 从APNIC获取中国IP地址列表
  15. N1 armbian cups安装hp m126a打印机
  16. HBuilderX踩坑记录(1)—— vivo iqoo z1开启adb调试
  17. opencv读取颜色通道
  18. mysql 分库备份_如何分表分库备份及批量恢复?MySQL
  19. 针对X5新内核Blink以及google chrome主要字体主动放大问题
  20. raid0两块硬盘损坏数据恢复过程

热门文章

  1. 鸿蒙智慧电视,华为的鸿蒙电视与智能电视有什么区别
  2. 后台数据到mysql怎样保持实时更新_京东智联云MySQL数据库如何保障数据的可靠性?...
  3. linux中的和,|和||
  4. 图数据库应用系列(一):金融智能风控
  5. 安装swig后,python3版本切换到了2
  6. javaswing引入百度地图_【react】React怎么引用百度地图
  7. 天翼云从业认证(1.3)了解数据库的概念、SQL、关系型数据库、大数据和 NoSQL 数据库
  8. Leetcode-435:无重叠区间
  9. 笔记-信息化与系统集成技术-商业智能-数据仓库系统
  10. 笔记-项目进度管理-估算活动顺序-依赖关系