ThinkPHP 学习笔记(二)

1.命名规范

使用ThinkPHP开发的过程中应该尽量遵循下列命名规范:

2类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如DbMysql.class.php;

2确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);

2类名和文件名一致(包括上面说的大小写一致),例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范;

2函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求);

2函数的命名使用小写字母和下划线的方式,例如 get_client_ip;

2方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 getUserName,_parseType,通常下划线开头的方法属于私有方法;

2属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 tableName、_instance,通常下划线开头的属性属于私有属性;

2以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload;

2常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY;

2配置和下参数以大写字母划线命名,例如HTML_CACHE_ON;

2语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_;

2对变量的命名没有强制的规范,可以根据团队规范来进行;

2ThinkPHP的模板文件默认是以.html 为后缀(可以通过配置修改);

2数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段,类似 _username 这样的数据表字段可能会被过滤。

特例:在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。

ThinkPHP默认全部使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理),否则可能导致很多意想不到的问题。

2.MVC分层

ThinkPHP中的MVC分层大致体现在:

模型(M):模型的定义由Model类来完成。

控制器(C):应用控制器(核心控制器App类)和Action控制器都承担了控制器的角色,Action控制器完成业务过程控制,而应用控制器负责调度控制。

视图(V):由View类和模板文件组成,模板做到了100%分离,可以独立预览和制作。

有些时候,ThinkPHP并不依赖M或者V ,也就是说没有模型或者视图也一样可以工作。甚至也不依赖C,这是因为ThinkPHP在Action之上还有一个总控制器,即App控制器,负责应用的总调度。在没有C的情况下,必然存在视图V,否则就不再是一个完整的应用。

3.CBD架构

ThinkPHP3.0版本引入了全新的CBD(核心Core+行为Behavior+驱动Driver)架构模式,因为从底层开始,框架就采用核心+行为+驱动的架构体系,核心保留了最关键的部分,并在重要位置设置了标签用以标记,其他功能都采用行为扩展和驱动的方式组合,开发人员可以根据自己的需要,对某个标签位置进行行为扩展或者替换,就可以方便的定制框架底层,也可以在应用层添加自己的标签位置和添加应用行。

4.特性概述

值得推荐的特性包括:

2CBD架构:ThinkPHP3.0版本引入了全新的CBD(核心+行为+驱动)架构模式,打造框架底层DIY定制和类AOP编程体验。利用这一新的特性,开发人员可以方便地通过模式扩展为自己量身定制一套属于自己或者企业的开发框架。

2编译机制:独创的项目编译机制,有效减少OOP开发中文件加载的性能开销。改进后的项目编译机制,可以支持编译文件直接作为入口载入,并且支持常量外部载入,利于产品发布。

2类库导入:采用基于类库包和命名空间的方式导入类库,让类库导入看起来更加简单清晰,而且还支持自动加载和别名导入。为了方便项目的跨平台移植,系统还可以严格检查加载文件的大小写。

2URL和路由:系统支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的服务器和运行模式的部署,配合URL路由功能,让你随心所欲的构建需要的URL地址和进行SEO优化工作。支持灵活的规则路由和正则路由,以及路由重定向支持,带给开发人员更方便灵活的URL优化体验。

2调试模式:框架提供的调试模式可以方便用于开发过程的不同阶段,包括开发、测试和演示等任何需要的情况,不同的应用模式可以配置独立的项目配置文件。只是小小的性能牺牲就能满足调试开发过程中的日志和分析需要,并确保将来的部署顺利,一旦切换到部署模式则可以迅速提升性能。

2ORM:简洁轻巧的ORM实现,配合简单的CURD以及AR模式,让开发效率无处不在。

2数据库:支持包括Mysql、Sqlite、Pgsql、Oracle、SqlServer、Mongo等数据库,并且内置分布式数据库和读写分离功能支持。系统支持多数据库连接和动态切换机制,犹如企业开发的一把利刃,跨数据库应用和分布式支持从此无忧。

2查询语言:内建丰富的查询机制,包括组合查询、快捷查询、复合查询、区间查询、统计查询、定位查询、多表查询、子查询、动态查询和原生查询,让你的数据查询简洁高效。

2动态模型:无需创建任何对应的模型类,轻松完成CURD操作,支持多种模型之间的动态切换,让你领略数据操作的无比畅快和最佳体验。

2扩展模型:提供了丰富的扩展模型,包括:支持序列化字段、文本字段、只读字段、延迟写入、乐观锁、数据分表等高级特性的高级模型;可以轻松动态地创建数据库视图的视图模型;支持关联操作的关联模型;支持Mongo数据库的Mongo模型等等,都可以方便的使用。

2模块分组:不用担心大项目的分工协调和部署问题,分组帮你解决跨项目的难题,还可以支持对分组的二级域名部署支持。

2模板引擎:系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签库的思想,并内置布局模板功能和标签库扩展支持。通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等其他第三方模板引擎。

2AJAX支持:内置和客户端无关的AJAX数据返回方法,支持JSON、XML和EVAL类型返回客户端,而且可以扩展返回数据格式,系统不绑定任何AJAX类库,可随意使用自己熟悉的AJAX类库进行操作。

2SAE支持:提供了新浪SAE平台的强力支持,具备“横跨性”和“平滑性”,支持本地化开发和调试以及部署切换,让你轻松过渡到SAE开发,打造全新的SAE开发体验。

2RESTFul支持:REST模式提供了RESTFul支持,为你打造全新的URL设计和访问体验,同时为接口应用提供了支持。

2多语言支持:系统支持语言包功能,项目和分组都可以有单独的语言包,并且可以自动检测浏览器语言自动载入对应的语言包。

2模式扩展:除了标准模式外,还提供了AMF、PHPRpc、Lite、Thin和Cli模式扩展支持,针对不同级别的应用开发提供最佳核心框架,还可以自定义模式扩展。

2自动验证和完成:自动完成表单数据的验证和过滤,新版新增了IP验证和有效期验证等更多的验证方式,配合自动完成可以生成安全的数据对象。

2字段类型检测:系统会自动缓存字段信息和字段类型,支持非法字段过滤和字段类型强制转换,确保数据写入和查询更安全。

2缓存机制:系统支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在内的动态数据缓存类型,以及可定制的静态缓存规则,并提供了快捷方法进行存取操作。

2扩展机制:系统支持包括模式扩展、行为扩展、类库扩展、驱动扩展、模型扩展、控制器扩展、Widget扩展在内的强大灵活的扩展机制,让你不再受限于核心的不足和无所适从,随心DIY自己的框架和扩展应用,满足企业开发中更加复杂的项目需求。

5.开发流程

使用ThinkPHP创建应用的一般开发流程是:

系统设计、创建数据库和数据表;(可选)

项目命名并创建项目入口文件,开启调试模式;

完成项目配置;

创建项目函数库;(可选)

开发项目需要的扩展(模式、驱动、标签库等);(可选)

创建控制器类;

创建模型类;(可选)

创建模板文件;

运行和调试、分析日志;

开发和设置缓存功能;(可选)

添加路由支持;(可选)

安全检查;(可选 )

部署到生产环境。


时间: 2024-07-31 06:57:34

ThinkPHP 学习笔记(二)的相关文章

thinkphp学习笔记4—眼花缭乱的配置

1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展配置>动态配置,所以后面的配置权限要大于前面的,因为后面的配置会覆盖前面同名配置,同事会生辰配置缓存文件无需重复解析,减小开销. 惯例配置:在惯例配置内对大多数常用参数进行默认配置,因为惯例配置最先加载,优先级别最低,如果不需要做特殊配置的话,完全可以保持默认值,惯例配置位于ThinkPHP/Conf/convention.php,内容摘抄如下: &l

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

thinkphp学习笔记9—自动加载

1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/Library/Org/Util/Auth.

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It

thinkphp学习笔记1—目录结构和命名规则

最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快点,别无他意,所谓活到老,学到老,希望各位不要见笑啊. 我的做法很简单,先从手册开始,手册是开发thinkphp作者辛勤劳动的成果,但是有些地方是在是不懂,如果有幸各位也遇到类似的问题希望能回复.thinkphp手册地址:http://doc.thinkphp.cn/manual.html 1.框架目录 在章节1.6 目录结构,内容如下: 新版的目录结