找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 330|回复: 0
打印 上一主题 下一主题

初品cakephp 入门基础

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 08:31:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            

首先来看一下cakephp的的执行流程(从百度百科借来的图片):
1:首先你的服务器必须支持rewrite,如果是不支持rewrite的虚拟主机的话cakephp是不能正常运行的。
2:将所有的请求定向到cakephp框架后就进入了框架的route,cakephp带有一套默认的分发规则(例如:http://……/test/test,在不做任何route配置的情况下cakephp会自动执行test_controller控制器中的test方法)。
我们可以通过配置route的方式将任何请求指向我们所希望执行的控制器和方法,配置如下(app/config/routes.php):
[U]复制代码[/U] 代码如下:
Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));

3:请求进入controller后cakephp会根据controller的名字去加载默认的model。例如:TestController会自动加载models下的test.php文件,接着我们就可以通过如下方法调用该model的方法了。
[U]复制代码[/U] 代码如下:
$this->test->find('all');

查看cakephp框架的controller基类源码(cake\libs\controller\controller.php的__mergeVars方法中)
[U]复制代码[/U] 代码如下:
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初识,认识可能存在偏差。
            
            
您可能感兴趣的文章:
  • 攻克CakePHP(PHP中的Ruby On Rails框架)图文介绍
  • 攻克CakePHP系列一 连接MySQL数据库
  • CakePHP去除默认显示的标题及图标的方法
  • 攻克CakePHP系列二 表单数据显示
  • 攻克CakePHP系列三 表单数据增删改
  • 配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
  • 初学CAKEPHP 基础教程
  • Cakephp 执行主要流程
  • cakephp打印sql语句的方法
  • 基于CakePHP实现的简单博客系统实例
  • Nginx配置PHP的Yii与CakePHP框架的rewrite规则示例
  • cakephp2.X多表联合查询join及使用分页查询的方法
  • CakePHP框架Session设置方法分析
  • cakephp常见知识点汇总
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端