首页 > 后端开发 > 正文

php框架的路由怎么实现 ThinkPHP的几种路由形式总结

2023-09-28 22:40:11 | 我爱编程网

我爱编程网小编给大家带来了php框架的路由怎么实现 ThinkPHP的几种路由形式总结相关文章,一起来看一下吧。

php框架的路由怎么实现 ThinkPHP的几种路由形式总结

ThinkPHP的几种路由形式总结


本篇文章总结了ThinkPHP的几种路由形式,分别是普通模式、PATHINFO、REWRITE和兼容模式,希望对各位学习thinkphp的朋友有帮助!
thinkphp官方文档里有详细的说明:
ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,
可以设置URL_MODEL参数改变URL模式。
(推荐教程:thinkphp教程)
现在我们来总结一下这四种路由的格式:
1.普通路由(get形式路由)
htttp://localhost/?m=模块名(分组名)&c=控制器名&a=方法名&id=?2.pathinfo路由形式(系统默认)
路由形式:网址/入口文件/模块名(分组名)/控制器名/方法/参数名/参数值
例如:
3.REWRITE模式
REWRITE模式是在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地
址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。
如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>接下来,就可以用下面的URL地址访问了:
在后面的文章中,我会详细介绍。
4.兼容路由形式
兼容模式是用于不支持PATHINFO的特殊环境.
路由形式:网址/入口文件?s=/模块名(分组名)/控制器名/方法名/参数名/参数值
注意:这里的小s是兼容模式变量名称,是可以通过配置文件更改的。

php框架的路由怎么实现 ThinkPHP的几种路由形式总结

php如何实现页面路由转发


php实现页面路由转发的方法:首先配置nginx服务器,在【.htaccess】中写上nginx的语法;然后打开根目录的【index.php】,编写文件路由即可。
php实现页面路由转发的方法:
1、配置nginx服务器
nginx服务器不会自动读取.htaccess,也不支持.htaccess语法,这里需要做一个投机取巧的方法:在.htaccess中写上nginx的语法,同时把该文件引入到nginx的配置中。这样就达到了和apache同样的目的。编辑.htaccess文件,输入以下内容并保存
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
location ~ /.ht {
deny all;
}【解释】nginx匹配失败的uri全都转给index.php,同时禁止访问.htaccess文件
最重要的一步:在nginx配置中,在server{}内加入一句话:
include E:/demo/.htaccess;【解释】将该文件原封不动的引入到nginx配置中。注意使用绝对路径!
2、编写index.php路由
打开根目录的index.php,输入以下内容
<?php
//路由
$uri = $_SERVER['REQUEST_URI']; //获取uri,例如 ,其uri="/study"
switch($uri){
case "/": include "template/home.php"; break;
case "/study": include "template/study.php"; break;
case "/play": include "template/play.php"; break;
}
编写/template/下的网页文件
/template/下存放的网页文件,随便编辑点html用于测试。例如 home.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>这里是home</title>
</head>
<body>
<h1>你好,这里是home页面</h1>
</body>
</html>效果
在浏览器访问 可以访问到/template/home.php
在浏览器访问 可以访问到/template/study.php
在浏览器访问 可以访问到/template/play.php
相关免费学习推荐:php编程(视频)

php框架的路由怎么实现 ThinkPHP的几种路由形式总结

php如何实现url路由分发功能


php实现url路由分发功能的方法:首先要在服务器的配置上对【/router/】路径进行拦截;然后实现路由分发器,并获取请求的uri;最后进行模块的编写。
【相关学习推荐:php图文教程】
php实现url路由分发功能的方法:
第一步,首先要在服务器的配置上对/router/路径进行拦截
调用某个文件夹目录下的index.php页面,假定现在所有模块使用单独的文件存放于class目录下,该目录与router平级,如下图所示:
第二步,路由分发器的实现(index.php)
<!Doctype html>
<html>
<head>
<title>路由测试~~</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
date_default_timezone_set("Asia/Shanghai");
define("MODULE_DIR", "../class/");
$_DocumentPath = $_SERVER['DOCUMENT_ROOT'];
$_FilePath = __FILE__;
$_RequestUri = $_SERVER['REQUEST_URI'];
$_AppPath = str_replace($_DocumentPath, '', $_FilePath); //==>
outerindex.php
$_UrlPath = $_RequestUri; //==>/router/hello/router/a/b/c/d/abc/index.html?id=3&url=http:
$_AppPathArr = explode(DIRECTORY_SEPARATOR, $_AppPath);

/**
* ;url=http:
*
* /hello/router/a/b/c/d/abc/index.html?id=3&url=http:
*/
for ($i = 0; $i < count($_AppPathArr); $i++) {
$p = $_AppPathArr[$i];
if ($p) {
$_UrlPath = preg_replace('/^/'.$p.'//', '/', $_UrlPath, 1);
}
}

$_UrlPath = preg_replace('/^//', '', $_UrlPath, 1);

$_AppPathArr = explode("/", $_UrlPath);
$_AppPathArr_Count = count($_AppPathArr);

$arr_url = array(
'controller' => 'index',
'method' => 'index',
'parms' => array()
);

$arr_url['controller'] = $_AppPathArr[0];
$arr_url['method'] = $_AppPathArr[1];

if ($_AppPathArr_Count > 2 and $_AppPathArr_Count % 2 != 0) {
die('参数错误');
} else {
for ($i = 2; $i < $_AppPathArr_Count; $i += 2) {
$arr_temp_hash = array(strtolower($_AppPathArr[$i])=>$_AppPathArr[$i + 1]);
$arr_url['parms'] = array_merge($arr_url['parms'], $arr_temp_hash);
}
}

$module_name = $arr_url['controller'];
$module_file = MODULE_DIR.$module_name.'.class.php';
$method_name = $arr_url['method'];

if (file_exists($module_file)) {
include $module_file;

$obj_module = new $module_name();

if (!method_exists($obj_module, $method_name)) {
die("要调用的方法不存在");
} else {
if (is_callable(array($obj_module, $method_name))) {
$obj_module -> $method_name($module_name, $arr_url['parms']);

$obj_module -> printResult();
}
}

} else {
die("定义的模块不存在");
}

?>

</body>
</html>获取请求的uri,然后拿到要加载的模块名、调用方法名,对uri参数进行简单的判断..
第三步,模块的编写
根据上述的uri,我们要调用的是Hello模块下的router方法,那么可以在class目录下定义一个名为Hello.class.php的文件(注意linux下是区分大小写的)
<?php
class Hello {
private $_name;
private $_varValue;

function __construct() {

}

function router() {
$this->_name = func_get_arg(0);
$this->_varValue = func_get_arg(1);
}
function printResult() {
echo $this->_name;
echo "<p>";
echo var_dump($this->_varValue);
echo "</p>";
}
}
?>同理,我们可以编写Ha模块..

这算是实现了很简单的url路由分发功能了?
相关学习推荐:php编程(视频)
我爱编程网

以上就是我爱编程网小编给大家带来的php框架的路由怎么实现 ThinkPHP的几种路由形式总结,希望能对大家有所帮助。
与“php框架的路由怎么实现 ThinkPHP的几种路由形式总结”相关推荐
php框架中路由的原理 ThinkPHP的几种路由形式总结
php框架中路由的原理 ThinkPHP的几种路由形式总结

php为什么要使用路由器电脑为什么用路由器才能上网首先要明白电脑并非一定要使用路由器上网:1、如果你的网络是运营商给的固定IP。那就右键网络--属性--本地连接--属性--双击ipv4,直接填上运营商给你的IP,网关,及DNS,这样就可以上网了。2、如果你的网络是运营商给的登陆账号和密码。那就右键网络--属性--设置新的连接和网络--连接到Internet--宽带

2023-09-28 22:26:16
php框架中的路由分发 ThinkPHP的几种路由形式总结
php框架中的路由分发 ThinkPHP的几种路由形式总结

ThinkPHP的几种路由形式总结本篇文章总结了ThinkPHP的几种路由形式,分别是普通模式、PATHINFO、REWRITE和兼容模式,希望对各位学习thinkphp的朋友有帮助!thinkphp官方文档里有详细的说明:ThinkPHP支持的URL模式有四种:普通模式、PATHINFO、REWRITE和兼容模式,可以设置URL_MODEL参数改变URL模式。(推荐教程:

2023-09-30 04:48:53
php框架路由实现的 php如何实现页面路由转发
php框架路由实现的 php如何实现页面路由转发

什么PHP框架可以自定义路由,我要用POST请求来做路由,并且路由的key可以自己定义可以自定义路由的框架太多了,以下从框架的可用性等来介绍:Laravel框架:合框架的大成,是一个全栈框架,包含:MVC,缓存,队列,定时任务等等。Slim:一个微型的框架,如果是简单的App后端服务,可以使用。ThinkPHP5.0版本:中文文档十分丰富,使

2023-09-24 06:53:09
php框架中路由 php写路由有几种方法
php框架中路由 php写路由有几种方法

php写路由有几种方法路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。接下来呢,我们实现一个简单的路由器,实现的能力是对于静态的路由(没占位符的),正确调用callback。路由分配(推荐学习:PHP视频教程)基于php的路由分配,实质上来说就是利用url中的path去匹配对应的控制类,同时调用其中的方法进行相关操作的处理。&lt;?php//权限控制in

2023-08-29 03:28:30
php框架的路由 php如何实现页面路由转发
php框架的路由 php如何实现页面路由转发

php如何实现页面路由转发php实现页面路由转发的方法:首先配置nginx服务器,在【.htaccess】中写上nginx的语法;然后打开根目录的【index.php】,编写文件路由即可。php实现页面路由转发的方法:1、配置nginx服务器nginx服务器不会自动读取.htaccess,也不支持.htaccess语法,这里需要做一个投机取巧的方法:在.htaccess中写上n

2023-09-07 09:02:20
php框架自定义路由 php写路由有几种方法
php框架自定义路由 php写路由有几种方法

php框架搭建方法?php框架搭建步骤:1.项目初始化首先我们在自己的web目录下创建我们的项目目录,我暂且把项目命名为hellovod,因此我的电脑目录就是:D:laragonwwwhellovod。在该目录下创建composer.json文件。2.添加入口文件初始化完毕后,我们来配置入口文件。在hellovod目录下新建一个public文件夹,并在该文件夹下创建

2023-09-25 22:28:09
php框架的路由机制 php如何实现页面路由转发
php框架的路由机制 php如何实现页面路由转发

php为什么要使用路由器电脑为什么用路由器才能上网首先要明白电脑并非一定要使用路由器上网:1、如果你的网络是运营商给的固定IP。那就右键网络--属性--本地连接--属性--双击ipv4,直接填上运营商给你的IP,网关,及DNS,这样就可以上网了。2、如果你的网络是运营商给的登陆账号和密码。那就右键网络--属性--设置新的连接和网络--连接到Internet--宽带

2023-09-23 16:06:33
php+框架+路由实现的 什么PHP框架可以自定义路由,我要用POST请求来做路由,并且路由的key可以自己定义
php+框架+路由实现的 什么PHP框架可以自定义路由,我要用POST请求来做路由,并且路由的key可以自己定义

php框架搭建方法?php框架搭建步骤:1.项目初始化首先我们在自己的web目录下创建我们的项目目录,我暂且把项目命名为hellovod,因此我的电脑目录就是:D:laragonwwwhellovod。在该目录下创建composer.json文件。2.添加入口文件初始化完毕后,我们来配置入口文件。在hellovod目录下新建一个public文件夹,并在该文件夹下创建

2023-09-28 06:12:59