thinkphp3.1的新功能

<?php
/*
 * TP新功能:
+----------------------------------------------------------------------------------------+
tp操作中的缺陷解决:
只需要配置下:ACTION_SUFFIX参数即可.
'ACTION_SUFFIX'=>'Action';
也就是给操作方法定义后缀,如果配置了上面的参数,我们实际的调用方法就在操作名后面加上了Action后缀了,
    http://localhost/index.php/User/list
=======================================================
class UserAction extends Action{
    public function listAction(){
        
    }
}
+----------------------------------------------------------------------------------------+
页面压缩输出支持:

大多数浏览器都支持了页面的压缩支持,通过压缩来输出页面,页面大小可以减少30%.由于3.0没有内置页面压缩功能输出功能,所以一般在入口中添加:
ob_start('ob_gzhandler');
但是由于服务器环境不同,有时候这个配置和php.ini中的zlib压缩配置冲突,3.1内置了页面压缩功能,不需要再手动添加ob_gzhandler代码,增加了OUTPUT_ENCODE配置参数,并支持检测zlib_ouput_compression.
框架默认会进行页面压缩输出,并且自动检测zlib.output_compression配置,如果php.ini里面的zlib.output_compression是否开启状态,则仍然以服务器环境的页面压缩方式进行页面压缩.\
相关代码就一行:
if(!ini_get('zlib.output_compression') && C('OUTPUT_ENCODE')) ob_start('ob_gzhandler');

在个别特殊的环境下,如果出现了类似下面的错误提示:

output_handler "ob_gzhandler" conflicts with "zlib.output_compression"

一般是你的服务器配置了其他的压缩方式导致了冲突,这个时候你想关闭OUTPUT_ENCODE,即

'OUTPUT_ENCODE'=>false
+----------------------------------------------------------------------------------------+
TP函数:M方法
M方法用于实例化一个基础模型类,和D方法的区别:
1.不需要自定义模型类,减少IO加载,性能较好
2.实例化后只能调用基础模型类,性能较好;
3.可以在实例化的时候指定表前缀,数据库和数据库的连接信息
D方法的强大则体现你封装的自定义的模型类有多强,不过随着tp框架的基础类的功能增加:
M比D也更加的给力:
M('[基础模型类:]模型名','数据库表前缀','数据库链接信息')
用法
a.实例化基础模型(model)类
$User=M('User');
//执行其他数据库操作
$User->select();
只能完成基本的CRUD,无法写入相关的业务逻辑
    $User=M('User');
其实等效于:
    $User=new Model('User');
表示操作think_user表.
    M方法和D方法一样也有单例功能,多次调用并不会重复实例化.M方法的模型名参数在转换成数据表的时候会自动转为小写,也就是说TP的数据库命名规范是全小写的格式.

b.实例化其他公共模型类:
第一种方法因为没有模型类的定义,因此很难封装一些额外的逻辑方法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下面的一种方法.
$User=M('CommonModel:User');
改用方法其实就等效于:
$User=new CommonModel('User');
因为系统的模型类都能够自动加载,因此我们不需要在实例化之前手动进行类库导入操作.模型类CommonModel必须继承Model.我们可以在CommonModel类里面定义一些通用的逻辑方法,就可以省去为每个数据表定义具体的模型类,如果你的项目已经超过了100个数据表了,而大多数情况下都是一些基本的CURD操作的方法的话,只是个别需要一些复杂的业务逻辑的话需要封装,那么第一种和第二种是一个不错的选择.
+----------------------------------------------------------------------------------------+
传入表前缀,数据库和其他信息
M方法有三个参数,第一个参数是模型名称(可以包含基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库链接信息(留空则取当前配置数据库连接信息)

posted @ 2012-09-22 18:59  sgsheg  阅读(215)  评论(0编辑  收藏  举报