ThinkPHP 2.0 开发技巧详解

需积分: 1 0 下载量 15 浏览量 更新于2024-07-31 收藏 854KB PDF 举报
"ThinkPHP 2.0 开发技巧" ThinkPHP 2.0 是一个基于 PHP 的轻量级框架,对于使用 PHP 进行网站开发的开发者来说,它提供了一系列实用的功能和优化技巧,有助于提升开发效率和代码质量。以下是一些关键的知识点: 1. **创建数据对象后的更改**:在调用 `M()` 函数创建数据对象并使用 `create()` 方法后,可以继续修改数据对象的属性,如 `$User->name = 'John';`,然后通过 `save()` 方法保存这些更改到数据库。 2. **定义实际的数据表名称**:通过在模型类中设置 `_table` 属性,可以指定数据表的实际名称,例如 `_table = 'user_table'`。 3. **获取个别字段的值**:使用 `getField('field_name')` 方法可获取单一字段的值,如 `$User->getField('username')`。 4. **设置字段别名**:在模型类中定义 `_map` 数组,可以为字段设置别名,如 `_map = array('username' => 'user_name')`。 5. **字段的表达式更新**:在更新数据时,可以使用 SQL 表达式,如 `$User->setField('status', 'status+1')` 来增加 status 字段的值。 6. **字段的动态查询**:在查询条件中可以使用字段的动态查询,如 `where('status=1 AND username LIKE "%test%"')`。 7. **针对主键的几个特殊用法**:ThinkPHP 支持多种主键操作,如 `find($id)` 获取主键为 $id 的记录,`save()` 更新主键对应的记录。 8. **获取当前Action的名称**:使用 `ACTION_NAME` 常量可以获取当前运行的 Action 名称。 9. **获取当前Model的名称**:通过 `MODEL_NAME` 常量可以获取当前 Model 类的名称。 10. **原生SQL和数据表替换**:可以使用 `query()` 方法执行原生 SQL 语句,并通过 `__TABLE__` 替换为当前模型对应的数据表。 11. **自动加载类库**:ThinkPHP 提供了自动加载类库的功能,无需手动 require 或 include,只需在配置文件中定义类库路径即可。 12. **文件哈希子目录缓存**:可以利用文件哈希创建子目录,优化缓存管理,提高访问速度。 13. **使用正则表达式进行自动验证**:在模型验证规则中可以使用正则表达式进行复杂数据验证。 14. **不创建模型类如何自动验证**:通过配置文件定义全局验证规则,即使不创建模型类也可以进行数据验证。 15. **模型不需要数据库怎么定义**:若模型不与数据库交互,可以定义一个空模型,仅包含业务逻辑。 16. **判断当前操作的请求类型**:使用 `IS_GET`、`IS_POST` 等常量来判断 HTTP 请求类型。 17. **巧用空操作实现用户动态URL**:通过定义空操作(如 empty.php),可以实现 URL 动态重定向。 18. **避免URL目录过深的技巧**:合理规划控制器和操作,减少 URL 中的层级。 19. **利用路由实现用户动态URL**:通过自定义路由规则,可以生成更友好的用户URL。 20. **巧用伪静态实现网站语言伪装**:通过配置伪静态规则,可以实现 URL 语言版本伪装,如 /en/ 和 /zh/。 21. **添加目录安全文件**:在敏感目录下添加 .htaccess 或 index.php 文件,防止目录直接浏览。 22. **避免JS代码被模板解析**:使用 `{literal}` 和 `{/literal}` 包裹 JavaScript 代码,防止被模板引擎解析。 23. **模型单独设置数据表的前缀**:可以在模型类中定义 `_table_prefix` 属性,为该模型设置独立的数据表前缀。 24. **巧用模型的表后缀实现多语言数据存储**:通过为模型定义不同的表后缀,可以实现多语言数据存储。 25. **空间不支持PATHINFO的处理**:在服务器不支持 PATHINFO 模式的情况下,可以通过配置 Rewrite 规则来模拟 PATHINFO。 26. **利用ALLINONE模式提高性能**:ALLINONE 模式将多个模块合并到一个入口文件,减少系统开销。 27. **设置默认时区**:通过配置文件设置系统默认时区,如 `'DEFAULT_TIMEZONE' => 'Asia/Shanghai'`。 28. **增加模板替换字符串**:在配置文件中定义替换字符串,方便模板中的动态替换,如 `'TMPL_L_DELIM' => '<##>'` 和 `'TMPL_R_DELIM' => '##>'`。 29. **巧用公共文件检测浏览器缓存**:通过设置文件的 HTTP 头信息,如 `Cache-Control` 和 `Expires`,可以控制浏览器缓存公共文件。 30. **使用U方法支持分组**:U 方法可以接受分组参数,生成带有分组的 URL,如 `U('Article/index', array('group' => 'latest'))`。 31. **定制页面Trace显示信息**:自定义 Trace 显示信息,以便在开发过程中查看系统运行状态。 32. **支持WML**:ThinkPHP 支持 WML(无线标记语言)开发,适应移动设备访问。 33. **利用初始化方法判断登录**:在模型或控制器的 _initialize() 方法中,可以检查用户是否已登录,以实现权限控制。 34. **巧用回调方法实现数组存储**:使用 before_insert、before_update 等回调方法,可以实现在数据插入或更新前后的额外操作,如处理数组数据。 35. **定制list标签的字段列表**:在标签库中定义 list 标签,可以自定义显示数据表的特定字段。 36. **定制list标签的操作列表**:同样在标签库中,可以定义 list 标签的行为按钮,实现列表页的操作功能。 37. **主键不是id的时候list标签如何输出**:当主键不是 'id' 时,需在 list 标签中指定主键字段,如 `list table="user" key="user_id"`。 以上是 ThinkPHP 2.0 框架中的一些开发技巧,涵盖了数据操作、URL 管理、模板处理、性能优化等多个方面,对开发者掌握和运用框架有很好的指导作用。