第一步,定义一个路由类,并且实现__callStatic,这是一个魔术方法,如果你不清楚这个函数的作用,请到php的官方网站查看手册,这里就不讲了。图中可以看到我定义了3个数组,分别保存路由定义时的路由规则,请求方法和 回调函数 。__callStatic只是简单的将对应的项压进对应的数组
第二步,定义一个dispatch 静态方法 ,函数名可以随便起,parse_url的用法参考 php 官方手册。基本思路是,1.获取访问的url 的pathinfo部分。2.获取访问方法。3.判断路由是否有定义。4.如果有定义就执行闭包否则输出404。
第三步,接下来就可以用了,定义一个config目录,在目录下定义一个routes.php文件。参考下图,引入上面完成的路由类,定义路由和闭包,调用dispatch方法
入口文件只需引入上面定义的routes.php文件即可
整个项目的目录结构就是这样
在浏览器访问效果,成功调用了刚才定义的方法
为了让服务器知道我们访问的不是真实路径下的文件,需要开启伪静态,看下面
.htaccess( Apache )
RewriteEngine On RewriteBase / # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1 [QSA,L]
.htaccess( Nginx )
rewrite ^/(.*)/$ /$1 redirect; if (!-e $request_filename){ rewrite ^(.*)$ /index.php break; }
就这样一个简单路由就完成了,尽管还有很多可以完善的地方,比如调用控制器的方法和参数传入。只能下次分享了
海报
0 条评论
143
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~