mvc(1)
来源:互联网 发布:sql msde 编辑:程序博客网 时间:2024/05/21 09:47
在我们自己要封装一个框架之前,我们首先要知道一般框架的运行流程如下
接下来就挨个流程给大家做详细的介绍。
入口文件
入口文件的内容一般包括如下3点
1.定义常量
2.加载函数库
3.启动框架
<?php/** * 入口文件 * 1.定义常量 * 2.加载函数库 * 3。启动框架 */ //定义常量 define('IMOOC',dirname($_SERVER['SCRIPT_FILENAME']).'/'); define('CORE',IMOOC.'/core'); define('APP',IMOOC.'/app'); define('MODULE','app'); define('DEBUG', true); if(DEBUG){ ini_set('display_error', 'On'); }else{ ini_set('display_error','Off'); } //加载函数库 include CORE.'/common/function.php'; //加载框架的核心文件 include CORE.'/imooc.php';<pre name="code" class="php"> spl_autoload_register('\core\imooc::load');
//启动框架 \core\imooc::run();
以上就是一个简单的入口文件的实例。
自动加载
在做类自动加载前,我们来回顾一下入口文件的
spl_autoload_register('\core\imooc::load');这个函数的意思是当我们所new的类不存在的时候,会触发上面函数里面的方法。
我们接下来看下core/imooc目录下的load方法所做的操作
static public function load($class){//自动加载类库if(isset($classMap[$class])){ return true;}else{$class = str_replace('\\', '/', $class); if(is_file(IMOOC.$class.'.php')){ //echo IMOOC.$class.'.php'; include IMOOC.$class.'.php'; self::$classMap[$class] = $class; }else{ return false; } }
上面所做的操作的意思就是说如果 我们引入的类存在,则执行下一步,否则将这个类引入进来,这就完成了我们的自动加载
路由类
路由类里面主要的操作就是隐藏路由中的index.php,获取url的参数部分,返回对应的控制器和方法
先说隐藏index.php
首先我们在与入口文件同级创建一个.htaccess的文件如下
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/ [QSA,PT,L]</IfModule>
这样就实现了隐藏index.php
然后是获得url的参数部分
<?phpnamespace core\lib;class route{public $ctrl;public $action;public function __construct(){if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){//判断是否有参数 //index/index $path = $_SERVER['REQUEST_URI']; $patharr = explode('/', trim($path,'/')); if(isset($patharr[0])){ $this->ctrl = $patharr[0]; } unset($patharr[0]); if(isset($patharr[1])){ $this->action = $patharr[1]; unset($patharr[1]); } else { $this->action = 'index'; } p($patharr); $count = count($patharr)+2; $i = 2; while($i < $count){ if(isset($patharr[$i+1])){ $_GET[$patharr[$i]] = $patharr[$i+1]; } $i = $i + 2; } p($_GET); //url多余部分转换成GET } else {$this->ctrl = 'index';$this->action = 'index';}}}
未完待续
0 0
- MVC-1
- mvc(1)
- MVC学习1-------------MVC流程
- MVC学习笔记1 MVC概述
- Spring MVC 学习1:MVC框架简介
- MVC学习笔记1---MVC的理解
- 精通MVC架构_2.1MVC架构
- AngularJS-MVC(1-1)
- Spring MVC分析1
- 什么是MVC-1
- asp.net mvc 1
- asp.net mvc 1
- MVC学习笔记--1
- spring MVC (1)
- Extjs4.1MVC详解
- Spring MVC-实例1
- Spring MVC 进阶1
- spring mvc练习[1]
- 新人的第一篇文章:谈商城中商品排序问题
- C++构造函数基础
- 枚举格式字符串
- poj 1064
- 第5周项目1 建立顺序栈算法库
- mvc(1)
- iOS 网络编程 (七)AFNetworking 3.1.0 使用
- Markdown语法
- javascript 函数
- 打造自己的php框架
- IO多路复用实践
- 学习封装 MVC (1)
- Java对象的serialVersionUID在序列化和反序列化的用途
- git常用命令---逐渐补充完善