Yii框架官方指南系列13——基础知识:开发规范

Yii框架官方指南系列13——基础知识:开发规范

Yii 偏爱规范胜于配置。遵循规范可使你能够创建成熟的Yii应用而不需要编写、维护复杂的配置。 当然了,在必要时,Yii 仍然可以在几乎所有的方面通过配置实现自定义。

下面我们讲解 Yii 编程中推荐的开发规范。 为简单起见,我们假设 WebRoot 是 Yii 应用安装的目录

1. URL

默认情况下,Yii 识别如下格式的 URL:

http://hostname/index.php?r=ControllerID/ActionID

r GET 变量意为 路由(route) ,它可以被Yii解析为 控制器和动作。 如果 ActionID 被省略,控制器将使用默认的动作(在CController::defaultAction中定义); 如果 ControllerID 也被省略(或者 r 变量不存在),应用将使用默认的控制器 (在CWebApplication::defaultController中定义)。

通过 CUrlManager 的帮助,可以创建更加可识别,更加 SEO 友好的 URL,例如http://hostname/ControllerID/ActionID.html。此功能在 URL Management 中有详细讲解。

2. 代码

Yii 推荐命名变量、函数和类时使用 驼峰风格,即每个单词的首字母大写并连在一起,中间无空格。 变量名和函数名应该使它们的第一个单词全部小写,以使其区别于类名(例如:$basePathrunController(),LinkPager)。对私有类成员变量来说,我们推荐以下划线作为其名字前缀(例如: $_actionList)。

由于在 PHP 5.3.0 之前不支持名字空间,我们推荐类要通过某种独立的方式命名,以避免和第三方类发生冲突。鉴于此, 所有的 Yii 框架类名以 “C” 作前缀。

一个针对控制器名字的特殊规则是它们必须以单词 Controller 结尾。那么控制器 ID 即类名的首字母小写并去掉单词 Controller。 例如,PageController 类的 ID 就是 page 。这个规则使应用更加安全。它还使控制器相关的URL更加简单(例如 /index.php?r=page/index 而不是 /index.php?r=PageController/index)。

3. 配置

配置是一个键值对数组。每个键代表了所配置的对象中的属性名,每个值则为相应属性的初始值。 例如,array('name'=>'My application', 'basePath'=>'./protected') 初始化了 name 和 basePath 属性为它们相应的数组值。

类中任何可写的属性都可以被配置。如果没有配置,属性将使用它们的默认值。 当配置一个属性时,最好阅读相应文档以保证初始值正确。

4. 文件

命名和使用文件的规范取决于它们的类型。

类文件应以它们包含的公有类命名。例如, CController 类位于 CController.php 文件中。 公有类是可以被任何其他类使用的类。每个类文件应包含最多一个公有类。 私有类(只能被一个公有类使用的类)可以放在使用此类的公有类所在的文件中。

视图文件应以视图的名字命名。例如, index 视图位于 index.php 文件中。 视图文件是一个PHP脚本文件,它包含了用于呈现内容的 HTML和PHP代码。

配置文件可以任意命名。 配置文件是一个PHP脚本,它的主要目的是返回一个体现配置的关联数组。

5. 目录

Yii 假定了一系列默认的目录用于不同的场合。如果需要,每个目录都可以自定义。

  • WebRoot/protected: 这是 应用基础目录, 是放置所有安全敏感的PHP脚本和数据文件的地方。Yii 有一个默认的 application 别名指向此目录。 此目录及目录中的文件应该保护起来防止Web用户访问。它可以通过 CWebApplication::basePath 自定义。

  • WebRoot/protected/runtime: 此目录放置应用在运行时产生的私有临时文件。 此目录必须对 Web 服务器进程可写。它可以通过 CApplication::runtimePath自定义。

  • WebRoot/protected/extensions: 此目录放置所有第三方扩展。 它可以通过 CApplication::extensionPath自定义。

  • WebRoot/protected/modules: 此目录放置所有的应用 模块,每个模块使用一个子目录。

  • WebRoot/protected/controllers: 此目录放置所有控制器类文件。 它可以通过CWebApplication::controllerPath 自定义。

  • WebRoot/protected/views: 此目录放置所有试图文件, 包含控制器视图,布局视图和系统视图。 它可以通过 CWebApplication::viewPath 自定义。

  • WebRoot/protected/views/ControllerID: 此目录放置单个控制器类中使用的视图文件。 此处的ControllerID 是指控制器的 ID 。它可以通过 CController::viewPath 自定义。

  • WebRoot/protected/views/layouts: 此目录放置所有布局视图文件。它可以通过CWebApplication::layoutPath 自定义。

  • WebRoot/protected/views/system: 此目录放置所有系统视图文件。 系统视图文件是用于显示异常和错误的模板。它可以通过 CWebApplication::systemViewPath 自定义。

  • WebRoot/assets: 此目录放置公共资源文件。 资源文件是可以被发布的,可由Web用户访问的私有文件。此目录必须对 Web 服务器进程可写。 它可以通过 CAssetManager::basePath 自定义

  • WebRoot/themes: 此目录放置应用使用的不同的主题。每个子目录即一个主题,主题的名字即目录的名字。 它可以通过 CThemeManager::basePath 自定义。

6. 数据库

多数Web 应用是由数据库驱动的。为了最佳时间,我们 推荐在对表和列命名时使用如下命名规范。注意,这些规范并不是 Yii 所必须的。

  • 数据库表名和列名都使用小写命名。

  • 名字中的单词应使用下划线分割 (例如 product_order)。

  • 对于表名,你既可以使用单数也可以使用复数。但 不要 同时使用两者。为简单起见,我们推荐使用单数名字。

  • 表名可以使用一个通用前缀,例如 tbl_ 。这样当应用所使用的表和另一个应用说使用的表共存于同一个数据库中时就特别有用。 这两个应用的表可以通过使用不同的表前缀很容易地区别开。

转载于:https://my.oschina.net/tlkt/blog/210337

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109878.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mt4历史数据回测_mt410年历史数据

    mt4历史数据回测_mt410年历史数据这个网站只能下载2001年-当前时间前一个月的数据,还是挺全的。但是下载下来之后好像是一分钟图的,妈蛋其实我想要1小时图的EURUSD历史数据。网站地址:http://www.fxfupan.com/datacenter.html它们网站上的复盘大师可以试下,回去我就试下看看他们的软件怎么样刚才找到一个更好的,上面的东西可以不必看了。福汇官方有个历史数据下载器软件(初阶免费),登录自己的福汇账号,…

    2022年8月15日
    5
  • vs中快速注释快捷键_VS2010快捷键

    vs中快速注释快捷键_VS2010快捷键选中需要注释的代码段,按Ctrl+K+C即可快速注释;选中需要取消注释的代码段,按Ctrl+K+U即可取消注释。

    2022年8月15日
    6
  • 鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…

    鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…说到《星辰变》,相信很多人都知道他的作者就是番茄吧?而番茄笔下最出名系列的小说,无疑就是“鸿蒙”系列了,其中《星辰变》就是“鸿蒙”系列中的一部作品。那“鸿蒙”系列小说到底有多少部曲呢?对此也有很多人有了这个疑问。原先的“鸿蒙三部曲”相信很多熟悉番茄小说的朋友都知道,原本番茄的《盘龙》《星辰变》《吞噬星空》被很多粉丝称之为“鸿蒙三部曲”。因为在《星辰变》的结局中我们也知道,鸿蒙创立了三个不同的世界,…

    2022年6月15日
    146
  • qxdm无法安装问题闪一下_Qualcomm QXDM

    qxdm无法安装问题闪一下_Qualcomm QXDM似乎很难看见这样不错的软件了,大概是因为功能确实切中了很多用户的期待,相类似功能的软件在这一点上做的就感觉一般般吧,大概就是全靠同行衬托了。是一种实时数据采集和诊断记录工具专业显示统计和诊断信息,使用户能够读写非易失性存储器LOG获取,LOG文件转换,测试机状态获取把程序里面的一些Message或者数据包输出到QXDM的图形接口确合理的使用可以为我们测试提供便捷的定位手段QualcommQXDM…

    2022年10月2日
    3
  • 基础工具之消息队列、线程池、缓冲区抽象、事件循环和日志实现

    正所谓“工欲善其事,必先利其器”,我们在实现通信设计任务的过程中需要一些基础工具来帮助我们搭建部分基础组件,这些基础工具包括消息队列,线程池,缓冲区抽象,事件循环和日志工具。接下来对这部分基础工具进

    2021年12月28日
    42
  • 关于大学毕业 总结的文章2000_如何写大学学期总结

    关于大学毕业 总结的文章2000_如何写大学学期总结本文十天后设置为粉丝可见,喜欢的提前关注不要白嫖请点赞不要白嫖请点赞不要白嫖请点赞文中提到的书我都有电子版,可以评论邮箱发给你。文中提到的书我都有电子版,可以评论邮箱发给你。文中提到的书我都有电子版,可以评论邮箱发给你。本篇文章应该算是Java后端开发技术栈的,但是大部分是基础知识,所以我觉得对任何方向都是有用的。1、数据结构数据结构是计算机存储、…

    2025年9月21日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号