您好,欢迎访问一九零五行业门户网

从零构建PHP商用MVC框架(2.1 路由-带参数请求)

本节我们就真正进入“从零构建php商用mvc框架”的实际动手阶段,本节的标题是“路由-带参数请求”,我们本节要构建最基本的mvc路由访问控制,举例如:minyifei.cn/?_c=test&_a=getinfo 能访问我们的testcontroller类的getinfo方法,并能正常输出内容。
首先我给大家先看看最终的项目目录结构是什么样子的,然后再逐个文件介绍:
先看看index.php,大家都比较熟悉,这个是整个项目的入口,代码也很简单,仅做为转发器,代码如下:
帮助
1
2
3
4
5
6
7
$c,
    );
    //转换 _c = 'ab_cd' 为 _c='abcd'
    $cs=explode(_,$c);
    for($index= 0;$index         $cs[$index] = ucfirst($cs[$index]);
    }
    $c= implode(,$cs);
    $route[a]=$a;
    $route[c]=$c;
    return$route;
}
我们这块定义参数路由控制器的访问参数为_c和_a,分别代表访问控制器和方法,大家可以根据自己的喜欢随意改动。还有一个细微的处理,_c如果为下划线连接的字符串时我这边会处理成驼峰访问,如:_c=teacher_center&_a=detail其实会访问teachercentercontroller的detail方法。
下面我们再看看核心代码myf.php,主要负责加载依赖的类库,并进行简单业务控制:
帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
_before_action();
    //执行用户方法
    $myfc->{$mvcaction}();
    //执行后置方法
    $myfc->_after_action();
}else{
    echo404 page not found;
}
代码也比较简单,而且备注也写的比较清楚,如果有不懂的可以留言,我会再针对行的解答!
我们再看看myf目录下的controller.php,现在这个类仅定义了个3个方法,两个空方法和一个魔术方法,未来我们很多模板引擎和系统参数都需要在这个类中初始化。
帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
hello;
    }
}
我们通过访问 minyifei.cn 会触发indexcontroller.php的index方法,浏览器会输出:
帮助
1
hello minyifei,i'm index->index
如果访问 minyifei.cn?_a=hello,则会触发indexcontroller.php的hello方法,浏览器会输出:
帮助
1
hello minyifei, i'm index->hello
帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
minyifei,
            web=> http://www.minyifei.cn,
            teach=>从零构建php商用mvc框架,
        );
        header('content-type:application/json; charset=utf-8');
        echojson_encode($info);
    }
}
testcontroller.php是一个输出json的例子,我们访问 minyifei.cn?_c=test&_a=getinfo页面会输出
帮助
1
2
3
4
5
{
 author:minyifei,
 web: http://www.minyifei.cn,
 teach:从零构建php商用mvc框架
}
到此本节的内容基本完成了,我也把本节课所涉及的代码发布到oschina的git上了,欢迎大家下载拍砖!
下载地址为:
其它类似信息

推荐信息