1、代码很大,这么一个小blog在用了框架之后,还需要敲那么多代码,开发时间也不短吧。
2、把html、css、script写在controller里,让controller变得很臃肿,代码也有点混乱。为何不写到view里面去呢?
protected function ajaxuploadresult($info) { // ajax方式附件上传提示信息设置 // 默认使用mootools opacity效果 //alert($info); $show = ''; //$this->assign('_ajax_upload_',$show); header(content-type:text/html; charset=utf-8); exit($show); return; }
3、混合使用了java、 www.2cto.com 微软.net、php三种代码风格(或者确切的说,从java、微软.net借鉴了函数、文件或变量的命名风格,但是没有php化)。不过在使用上比较一致,出问题几率也不会太大,只是我不是很习惯。
4、在controller代码里写business logic和数据库操作。我看model里的代码基本都很短,看来是基本上博客的功能都写在controller里面去了。比较像fat controller的写法,但是数据库的操作写到model里应该好些吧(按我理解的mvc来说)。fat model比fat controller多很多好处,便于代码重用。
5、这个要举例说明一下,在看代码的时候,发现一句注释。
if (!empty($id)) { $blog = d(blogview); $result = $blog->where('blog.id=' . $id)->find(); // 这里为什么用select()就读不出来 if ($result) { $this->assign('vo', $result); } else { $this->redirect('index'); return; } } else { $this->redirect('index'); }
因为我对数据库操作方面比较关心,之前看过部分thinkphp的文档。拜托,写这代码的朋友,tp里select读出来的是记录集,find得到的是记录,你这么assign过去,当然读不出来啦。要把$result改成$result[0]才可以读出来的嘛。这样我感觉tp的example编写者也对使用者太不负责任了。不过也没多大问题,只是一个rc版本。
6、混合有字符串式拼凑的sql请求,有些我没读懂!!!可能需要时间深入探究。过多使用这类sql,会有安全隐患吧(例如sql注入)。
public function tag() { $tag = m(tag); if (!empty($_get['name'])) { $name = trim($_request['name']); $list = $tag->where(module='blog' and name='$name')->field('id,count')->find(); $tagid = $list['id']; $count = $list['count']; import(@.org.page); $listrows = 10; $fields = 'a.id,a.userid,a.categoryid,a.ctime,a.readcount,a.commentcount,a.title,c.title as category'; $p = new page($count, $listrows); $p->setconfig('header', '篇日志 '); $dao = d(blog); $list = $dao->query(select . $fields . from . c('db_prefix') . 'blog as a,' . c('db_prefix') . 'tagged as b, ' . c('db_prefix') . 'category as c where b.tagid in (' . $tagid . ') and a.categoryid= c.id and a.status=1 and a.id=b.recordid order by a.id desc limit ' . $p->firstrow . ',' . $p->listrows); if ($list) { $page = $p->show(); $this->assign(page, $page); $this->assign('list', $list); } $this->assign('tag', $name); $this->assign(count, $count); } else { $list = $tag->where(module='blog')->select(); //dump($list); $this->assign('tags', $list); } $this->display(); }
7、代码风格能体现一个程序员的水平,跟ci的examples相比,还是有一定差距。注释写的比较随意。我有时写代码,注释也挺随意的。有时候为了尊重其他人,还是需要像写代码一样很大耐心地去写注释。
8、跟代码无关。附带的用户文档不是很人性化,在我本本上都看到字体很大,行距很大,一段简单功能的php代码就显示了两页。有些代码为了语法高亮使用了图片,不过图片的质量太低了,可能我玩多了单反。作成html其实也方便用户使用、查找的嘛,弄个pdf多了些麻烦。
以上观点仅针对thinkphp 3.0 rc1的example而言。我没有看过核心代码,所以无权评论。同时也没有否定国内mvc框架实力的意思,只不过我觉得,tp的开发者应该在一些细节上多下些功夫,多灌注一些心血,让tp的手册和例子的质量有所提高!
摘自 xiaoxia
http://www.bkjia.com/phpjc/478404.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/478404.htmltecharticle前几天下载了thinkphp的代码来看,给我的印象没有codeigniter(ci)的那么好。或许是因为我下载的是最新的rc版本吧!里面的examples不全,打开几...
