1. 云栖社区>
  2. PHP教程>
  3. 正文

一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法

作者:用户 来源:互联网 时间:2017-12-01 11:57:17

框架url方法codeigniter映射重写如何

一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法 - 摘要: 本文讲的是一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法, CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容。那么我们第一课中就是实现一个这样的原型框架。 1. 新建 index.ph

CodeIgniter 框架最显著的特征就是 MVC 模式,它的做法就是提取 url 中的'分段', 映射到某个类的某个方法,从而由该方法来输出最终显示的页面内容。那么我们第一课中就是实现一个这样的原型框架。


1. 新建 index.php 文件


2. 提取 uri


一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法


1 /**
2* --------------------------------------------------------------------
3* 获取 uri ,并通过 uri 调用相应的方法
4* --------------------------------------------------------------------
5*/
6
7 function detect_uri() {
8
9 if ( ! isset($_SERVER['REQUEST_URI']) OR ! isset($_SERVER['SCRIPT_NAME'])) {
10return '';
11 }
12
13 $uri = $_SERVER['REQUEST_URI'];
14 if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0) {
15$uri = substr($uri, strlen($_SERVER['SCRIPT_NAME']));
16 }
17
18 if ($uri == '/' || empty($uri)) {
19return '/';
20 }
21
22 $uri = parse_url($uri, PHP_URL_PATH);
23
24 // 将路径中的 '//' 或 '../' 等进行清理
25 return str_replace(array('//', '../'), '/', trim($uri, '/'));
26 }
27
28 $uri = detect_uri();
29 echo $uri;

一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法


3. 提取 uri 中的分段信息


一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法


1 function explode_uri($uri) {
2
3 foreach (explode('/', preg_replace("|/*(.+?)/*$|", "//1", $uri)) as $val) {
4$val = trim($val);
5if ($val != '') {
6$segments[] = $val;
7}
8 }
9
10 return $segments;
11 }
12
13 $uri_segments = explode_uri($uri);
14 print_r($uri_segments);

一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法


4. 根据分段信息,调用相应类的方法


1 // 调用类和方法
2 $CI = new $class();
3
4 $CI->$method();

整个代码最终就完成了,为了测试效果,紧接着以上代码,写一个 包含 hello 方法的 Welcome 类,并输出My first Php Framework!


测试代码如下:


class Welcome {
function hello() {
echo 'My first Php Framework!';
}
}

现在,在浏览器中输入http://localhost/learn-ci/index.php/welcome/hello


就可以看到页面中显示(注意先去掉代码中的上面两个函数下面的 echo 和 print_r 调试语句 )


My first Php Framework。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索框架 , url , 方法 , codeigniter , 映射 , 重写 , 如何 ,以便于您获取更多的相关知识。