免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1509 | 回复: 1

初品cakephp [复制链接]

论坛徽章:
0
发表于 2012-02-25 21:19 |显示全部楼层
初品cakephp








近段时间项目挺轻松的,刚好有时间来了解一下cakephp。下面只是一己之见,初识cakephp而已,完全不保证内容的正确性。


2012021611024761.jpg


首先来看一下cakephp的的执行流程(从百度百科借来的图片):

1:首先你的服务器必须支持rewrite,如果是不支持rewrite的虚拟主机的话cakephp是不能正常运行的。

2:将所有的请求定向到cakephp框架后就进入了框架的route,cakephp带有一套默认的分发规则(例如:http://……/test/test,在不做任何route配置的情况下cakephp会自动执行test_controller控制器中的test方法)。

我们可以通过配置route的方式将任何请求指向我们所希望执行的控制器和方法,配置如下(app/config/routes.php):



  1. ?




  2. Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));
复制代码
3:请求进入controller后cakephp会根据controller的名字去加载默认的model。例如:TestController会自动加载models下的test.php文件,接着我们就可以通过如下方法调用该model的方法了。
  1. ?




  2. $this->test->find('all');

  3. 查看cakephp框架的controller基类源码(cake\libs\controller\controller.php的__mergeVars方法中)




  4. ?




  5. if ($this->uses !== null && $this->uses !== false) {    $merge[] = 'uses';} foreach ($merge as $var) {    if (isset($appVars[$var]) && !empty($appVars[$var]) && is_array($this->{$var})) {        if ($var !== 'uses') {            $normal = Set::normalize($this->{$var});            $app = Set::normalize($appVars[$var]);            if ($app !== $normal) {                $this->{$var} = Set::merge($app, $normal);            }        } else {            $this->{$var} = array_merge($this->{$var}, array_diff($appVars[$var], $this->{$var}));        }    }}
复制代码
在cakephp构造controller的时候将uses数组中的model会全部实例化。

4、5、6:是controller和model直接处理业务逻辑的一个过程,值得注意的是cakephp的model继承自AppModel,在AppModel中已经实现了一些数据库的操作方法,并且model会默认关联到数据库中的表。这一点感觉不是很好,model只是一个数据库的操作层了。

7:在进行完业务处理后,最终要数据要整合html输出到浏览器端。在cakephp的视图中包含布局文件、元素文件和模板文件,这些文件的在1.3版本中采用ctp的后缀,在controller基类里面可以修改var $ext = '.ctp';来改变模板文件的后缀。



小结:cakephp框架使用起来感觉不够灵活,model层存在局限性。而视图文件中采用的是php的语法不便于团队开发中的任务分离。在小项目中cakephp还是游刃有余的,框架提供的脚手架、核心组件和一些类可以快速方便的构建一个项目。cakephp初识,认识可能存在偏差。

论坛徽章:
0
发表于 2012-02-25 21:19 |显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP