在core目录下创建lib目录,创建route.php文件,此时应注意命名空间为:namespace core\lib;
正常情况下我们访问的网址是 xxx.com/index.php/index/index
这里呢我们要做的有三件事:
1.为了url更加美观,我们要隐藏index.php部分
首先需要在根目录下创建.htaccess文件,写我们的重定向规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
主要作用呢就是当有url地址提交来,就让它映射到index.php。
我们可以通过var_dump($_SERVER);来查看我们的路径 [REQUEST_URI];
2.获取URL参数部分
3.返回对应控制器和方法
<?php
namespace core\lib;
class route
{
public $controller;
public $action;
public function __construct()
{
/**
* 1.隐藏index.php
* 2.获取URL 参数部分
* 3.返回对应控制器和方法
*/
//p($_SERVER);
if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){
// index/index
$path = $_SERVER['REQUEST_URI'];
$patharr = explode('/', trim($path,'/'));
//p($patharr);
if(isset($patharr[0])){
unset($patharr[0]);
}
if(isset($patharr[1])){
$this->controller = $patharr[1];
}
unset($patharr[1]);
if(isset($patharr[2])){
$this->action = $patharr[2];
unset($patharr[2]);
}
else
{
$this->action = 'index';
}
//p($patharr);
//url 多余部分转化成 GET
//id/1/str/2/test/3
$count = count($patharr) + 3;
$i = 3;
while($i < $count){
if(isset($patharr[$i + 1])){
$_GET[$patharr[$i]] = $patharr[$i + 1];
}
$i =$i + 2;
}
//p($_GET);
}else{
$this->controller = 'index';
$this->action = 'index';
}
}
}