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创建应用的一般开发流程是:

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

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

完成项目配置;

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

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

创建控制器类;

创建模型类;(可选)

创建模板文件;

运行和调试、分析日志;

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

添加路由支持;(可选)

安全检查;(可选 )

部署到生产环境。



本文出自 “小王子” 博客,请务必保留此出处http://littleprince.blog.51cto.com/1491292/1617815

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。