目前分了 3.1和3.2版本,是不能直接升级到3.2的,3.2彻底基于5.3以上版本,代码风格什么的都改变了,最大的就是应用了“命名空间”的概念。我以前是作C#开发的因此对于我一点也不陌生,并且很坚持的支持这样的升级,可是目前PHP的这种命名空间还不是很顺手,根据版本命名来看应该是个过分版本。等下一次调整吧。php
建议不要使用TP内置的分页,内置的分页把HTML也封装到里面了,虽然也能够随意修改HTML模板,可是该死的URL竟然是拼接来的,这限制了使用场景,其实利用模型的page很容易就能够本身封装一个分页的,而我本身根本就没把分页封装,直接暴露出来而后包含一个文件,直接在HTML里面拼装分页,很灵活。前端
模型实例时请使用D方法mysql
官方说M方法快速高效但D方法才能够使用一些高级的特性,例如在model中本身定义的一些方面必须经过D方法以后才能够调用,sql
便是为每一张表创建xxxModle.class.php,这样作虽然很麻烦可是实际过程当中颇有用,我我的习惯建一个公共的模型文件CommonModel.class.php,内置 _list_和 getOne方法,cookie
<?php class CommonModel extends Model { public function _list_($map = array() ,$page = 1,$limit = 16, $orderby = "id desc"){ $list['count'] = $this->where($map)->count('id'); $list['page'] = $page; $list['map'] = $map; $list['limit'] = $limit; $pagecount = ceil($list['count'] / $list['limit']); if ($pagecount < 1) $pagecount =1; $list['pagecount'] = $pagecount; $vlist = $this->where($map)->page($page,$limit)->order("$orderby ")->select(); $vvlist = array(); foreach ($vlist as $k) { if (method_exists($this, 'ckvo')) { $vvlist[] = $this->ckvo($k); }else{ $vvlist[] = $k; } } $list['volist'] = $vvlist; return $list; } public function getOne($map='') { $vo = $this->where($map)->order('id desc')->find(); if (method_exists($this, 'ckvo')) { $vo = $this->ckvo($vo); } return $vo; } } ?>
使用了page方法,而且返回了分页全部必须的参数,这里还建议尽可能不要使用TP的关联方法,这里我用ckvo方法代替了,性能
public function ckvo($vo='') { if (!$vo) return; $Comment = D('Comment'); $comment = $Comment->getAll($vo['id'],'Info'); if ($comment) { $vo['Comment'] = $comment; } return $vo; }
这样虽然屡次查询了,但并不比TP的联合查询性能差,其实最终mysql解析二者原理都同样的,关键是这样我能够任意组合也更方面查询。优化
public function ckvo($vo = '') { if (!$vo) return; $LotteryItem = M('LotteryItem'); $map['lid'] = $vo['id']; $vlist = $LotteryItem->where($map)->select(); for ($i=0; $i < 6; $i++) { $vo['Item'][$i] = $vlist[$i]; } if ($vo['status'] == 0) $vo['status_text'] = "未开始"; elseif ($vo['status'] == 1) $vo['status_text'] = "报名中"; elseif ($vo['status'] == 2) $vo['status_text'] = "抽奖中"; elseif ($vo['status'] == 3) $vo['status_text'] = "抽奖结束"; return $vo; }
若是后台没有其余需求,请使用平台URL模式即设置 URL_MODEL = 0,通常作URL优化是更好的方便收录,但后台都不想被收录吧,这还不是最主要的,自定义模式的URL(非平台模式)在结合前端开发的时候带来很大的困扰,例如默写时候须要jq对URL解析就很不方便判断了,而且我发如今设置cookies的时候也会有路径的问题(因此致使内置的cookie很很差使)总之尽可能使用普通URL模式。this