www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

执行入眼流程,入门基础计算机编程

2019-07-28 05:46 来源:未知

加载基本文件
cake/basics.php 里面定义了常用的方法以及时间常量
$TIME_START = getMicrotime(); 记录开始执行时间
cake/config/paths.php 里面定义一些基本路径
cake/lib/object.php cake的基本类
cake/lib/inflector.php 这里主要是处理单复数,带下划开命名以及驼峰式命名
cake/lib/configure.php 里面提供文件配置的读写,路径的设置,以及加载文件的方法
cake/lib/cache.php 缓存的操作

去除的办法是:
修改cakelibsviewtemplateslayoutsdefault.thtml,这个是视图文件的通用模板框架(带头部和脚部)。
另外:
cakephp视图文件的扩展名都是thtml,这个是默认值,如果想修改后缀名也是可以的。
修改的方法是:
早cakelibscontrollercontroller.php里把 var $ext='.thtml'改成html即可。

计算机编程 1
首先来看一下cakephp的的执行流程(从百度百科借来的图片):
1:首先你的服务器必须支持rewrite,如果是不支持rewrite的虚拟主机的话cakephp是不能正常运行的。
2:将所有的请求定向到cakephp框架后就进入了框架的route,cakephp带有一套默认的分发规则(例如:
我们可以通过配置route的方式将任何请求指向我们所希望执行的控制器和方法,配置如下(app/config/routes.php):

Configure::getInstance(); 开始对项目的配置
config/core.php 项目的配置文件
config/bootstrap.php 项目的入口文件

您可能感兴趣的文章:

  • CakePHP框架Model关联对象用法分析
  • cakephp常见知识点汇总
  • CakePHP框架Session设置方法分析
  • cakephp2.X多表联合查询join及使用分页查询的方法
  • Nginx配置PHP的Yii与CakePHP框架的rewrite规则示例
  • 基于CakePHP实现的简单博客系统实例
  • cakephp打印sql语句的方法
  • Cakephp 执行主要流程
  • 配置Apache2.2 PHP5 CakePHP1.2 MySQL5运行环境
  • CakePHP框架Model函数定义方法示例

复制代码 代码如下:

App::import(‘Core', array(‘Dispatcher')); 加载核心,开始做正事了,GO
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch($url); 开始执行,通过对当前的url解析,如果你设置了压缩Js、Css,则对这些文件压缩输出,如果你对页面设置缓存,则直接输出缓存页面,最后查找相应的Controller。如果找不到,则进行相应的错误处理。
实例化当前Controller,确定视图路径,实例化Component,获得仅当前Controller[不包含父类Controller]的方法
对当前Controller中私有方法、带admin路由或者带prefix的方法进行保护,不允许直接访问
设置当前Controller的基本属性,如base、here、webroot、plugin、params、action、 passedArgs[array_merge($this->params['pass'],$this->params['named'])]
调用Controller中的constructClasses方法
执行__mergeVars方法,该方法对父子类的components、helpers、uses等属性进行特殊合并处理
调用Component->init()方法,载入用户设置的系列components(Session为默认),并默认enabled属性为true。(该属性可以后期在beforeFilter里修改)
调用Component->initialize()方法,若系列components里有这个initialize方法并且该component 的enabled为true,则调用该components->initialize方法(这里enabled用户好像无法通过 Controller设置,只能为true)
调用当前Controller中beforeFilter()方法,这个方法是个好东西^_^
调用Component->startup()方法,同样,若系列components里有这个startup方法并且该component的 enabled为true,则调用该components->startup方法(这里enabled倒是可以通过beforeFilter设 置),该方法也是components里最重要的方法,比如Auth就在这里大作文章^_^
开始执行当前Controller里的Action方法
如果设置autoRender为true,则根据调用当前Controller的render()方法,否则返回或输出Action方法的返回的数据
调用Controller的render()方法时,先调用当前Controller中的beforeRender()方法
加载视图渲染类
调用Component->beforeRender()方法,同样,若系列components里有这个beforeRender方法并且该 component的enabled为true,则调用该components->beforeRender方法(这里enabled可以通过 beforeFilter设置)
获取当前Model的数据验证错误信息,给View使用
调用View的render()方法
载入相关Helper助手
调用Helper的beforeRender()方法
调用Helper的afterRender()方法
相关的缓存处理
执行renderLayout()方法,当然前提你要允许渲染布局,默认为default.ctp布局文件
调用Helper的beforeLayout()方法
调用Helper的afterLayout()方法
调用Component->shutdown()方法,同样,若系列components里有这个shutdown方法并且该component的 enabled为true,则调用该components->shutdown方法(这里enabled可以通过beforeFilter设置)
执行当前Controller里的afterFilter方法,这里你可以对视图的输出内容($controller->output)做一些处理
返回或输出视图数据。
流程完毕。

Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));

您可能感兴趣的文章:

  • CakePHP框架Model关联对象用法分析
  • cakephp常见知识点汇总
  • CakePHP框架Session设置方法分析
  • cakephp2.X多表联合查询join及使用分页查询的方法
  • Nginx配置PHP的Yii与CakePHP框架的rewrite规则示例
  • 基于CakePHP实现的简单博客系统实例
  • cakephp打印sql语句的方法
  • 配置Apache2.2 PHP5 CakePHP1.2 MySQL5运行环境
  • CakePHP去除默认显示的标题及图标的方法
  • CakePHP框架Model函数定义方法示例

3:请求进入controller后cakephp会根据controller的名字去加载默认的model。例如:TestController会自动加载models下的test.php文件,接着我们就可以通过如下方法调用该model的方法了。

复制代码 代码如下:

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

查看cakephp框架的controller基类源码(cakelibscontrollercontroller.php的__mergeVars方法中)

复制代码 代码如下:

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框架Session设置方法分析
  • cakephp2.X多表联合查询join及使用分页查询的方法
  • Nginx配置PHP的Yii与CakePHP框架的rewrite规则示例
  • 基于CakePHP实现的简单博客系统实例
  • cakephp打印sql语句的方法
  • Cakephp 执行主要流程
  • 初学CAKEPHP 基础教程
  • 配置Apache2.2 PHP5 CakePHP1.2 MySQL5运行环境
  • 攻克CakePHP系列三 表单数据增删改
  • 攻克CakePHP系列二 表单数据显示
  • CakePHP去除默认显示的标题及图标的方法
  • 攻克CakePHP系列一 连接MySQL数据库
  • 攻克CakePHP(PHP中的Ruby On Rails框架)图文介绍
  • cakephp常见知识点汇总
TAG标签:
版权声明:本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:执行入眼流程,入门基础计算机编程