木_马

导航

php开发框架thinkphp使用注意事项

 1.c层父类thinkphp/lib/core/Action.class.php,m层thinkphp/lib/core/Model.class.php,数据操作最终会调用thinkphp/lib/core/Db.class.php中的方法,DB中的方法又最终会调用thinkphp/lib/driver/DbMysql.class.php中的query或execute方法
 

2.类的构造函数不要用php的__construt,thinkphp有_initialize可以代替
 
3.thinkphp获取get,post等参数,用$this->_get _post等,但你可能会发现根本就找不到_get等方法,其实在action.class.php中有一个魔法函数__call,当调用没有的方法时就会调用__call方法。$this->_get("name");
最终调用的结果就是 htmlspecialchars($_GET["name"]),如果要改变过滤方法,可以使用:
$this->_get("name","strip_tags");如果不存在会返回null,也可以设置第三个参数做为默认返回值。在这里我给它再加了trim方法过滤。
 
4.web/runtime下~runtime.php是缓存文件,如果重新设置了配置文件,记得删除。
 
5.如果不希望依赖字段缓存或者想提高性能,也可以在模型类里面手动定义数据表字段的名称,可以避免IO加载的效率开销,在模型类里面添加fields属性即可,定义格式如下:protected $fields = array (
'id',
'username',
'cname',
'password',
'phone',
'email',
'warn_email',
'code',
'rand',
'deadtime',
'_pk' => 'id',
'_autoinc' => true 
);其中_pk 表示主键字段名称 _autoinc 表示主键是否自动增长类型,定义了fields属性之后,就不会自动获取数据表的字段信息了。如果有修改或者增加字段,必须手动修改fields属性的值。在此基础上,我通常会加上public function _initialize() {
$this->field ( true );
}意思是默认fields中除_pk,_autonic,_type的全部字段。
 
6.查找一条记录时,最好使用find,它返回的是一维数组
 
7.调用save时,data中只要有主键,options参数不填即可,如果没有主键,options数据中必须有要where键对应相关条件

posted on 2014-10-18 18:53  unocus  阅读(496)  评论(0)    收藏  举报