使用MVC的好处之一就是能够提供可定制化的URL形式,其中路由功能是MVC框架中最常见的功能。ThinkPHP提供了完善的URL路由功能,能够实现高度可定制的URL形式。在ThinkPHP 3.0中,URL路由规则使用URL_ROUTE_RULES数组进行配置;而在ThinkPHP 2.x中使用的是routes.php配置文件,这点需要注意。使用Web服务器URL重写大多数都是使用正则来实现路由功能的。......
2023-11-04
ThinkPHP共支持4种形式的URL模式,分别为普通模式、PATHINFO模式、REWRITE模式和兼容模式。这4种URL构成了ThinkPHP MVC任务请求的核心,开发人员可以通过配置文件进行指定,4种URL模式根据Web服务器的差异,支持有所不同(有些服务器如Nginx、lighttpd需要读者自行配置),从目前的使用情况来看,在Apache中运行得最完美,开发人员不需要特别的设置均可以在4种URL中自由切换。下面分别对4种URL进行讲解。
1.普通模式
本质上ThinkPHP的4种URL都是由普通模式的URL转换而成的,普通模式是整个URL处理模式的基础。普通模式下的URL显得比较长,各参数需显式传递,过长的URL对搜索引擎并不友好,但是普通模式能够支持任何Web服务器,对开发人员而言也显得比较友好。普通模式下URL格式如下。
http://tp.localhost/index.php?a=index&m=index&username=ceiba
普通模式URL和常见的网站URL非常类似,它是以显式的参数作为传递方式。其中参数a表示控制器的动作(即模型类中的方法);参数m指定控制器名称。除了需要指定这两个参数之外,开发人员可以附加更多自定义参数,附加的自定义参数在控制器动作中可以使用$_G[“参数名称”]方式进行获取。如果请求的控制器和动作都为index,那么可以省略该请求参数,格式如下。
http://tp.localhost/index.php?username=ceiba
上述URL的请求结果是和前面URL请求结果是一样的。普通URL模式不需要修改Web服务器配置,只需要修改配置文件参数URL_MODEL=0即可;普通的URL模式是早期ThinkPHP的默认URL模式,也是众多网站所使用的方式,但无论对用户还是搜索引擎都显得不友好,所以现在很少使用了。接下来将介绍另外一种比较新式的URL模式。
2.PATHINFO模式
PATHINFO模式能够提供一种简短、友好的URL形式,是ThinkPHP默认的URL模式。PATHINFO模式是利用ThinkPHP的路由功能实现的,它的实现原理与URLRewriter相类似,但是ThinkPHP不依赖于Web服务器的正则,框架自身已经有一套URL正则处理机制,开发人员甚至不需要部署.htaccess文件,所以PATHINFO能够兼容绝大多数Web服务器。PATHINFO模式的URL格式如下。
http://tp.localhost/index.php/index/content/username/ceiba
PATHINFO为ThinkPHP默认的处理模式,能够显著改善URL形式,提高用户体验。PATHINFO清楚地表达MVC的处理过程,如图6-1所示。
如图中所示,在整个请求的URL字符串中,对于开发者而言只需要记住两项参数,即控制器(index)和content(动作),前后顺序不能改变。其余的参数(选项)均可作为需要传递的GET参数,如username/ceiba与&username=ceiba作用是一样的,如果需要传递更多参数,依次类推,附加上即可。
图6-1 PATHINFO模式
入口网址后的参数分隔符是可变的,开发人员可以通过修改URL_PATHINFO_DEPR配置参数实现需求,默认URL_PATHINFO_DEPR=”/”,常见的分隔符为“_”、“,”、“-”等,但不能使用“:”、“&”、“?”作为分隔符。
PATHINFO的本质是使用PHP解释引擎中的$_SERVER['PATH_INFO']数组实现的,能不能使用PATHINFO模式还得看服务器支不支持$_SERVER['PATH_INFO'],通常情况下常见的Web服务器如Apache、IIS等都能够很好地支持。如果是反向代理一类的Web服务器(例如Nginx、lighttpd),需要额外调用CGI(详细可阅读本书附录A)。(www.chuimin.cn)
PATHINFO配合服务器的RewriteRule功能,还可实现隐藏index.php。在Apache中只需要开启mod_rewrite模块即可(XAMPP开发套件已默认开启),然后配置网站中的.hessace文件(与入口文件同级),如以下代码所示。
重启Apache服务器后,此时就可以使用http://tp.localhost/index/content/username/ceiba代替http://tp.localhost/index.php/index/content/username/ceiba网址了。隐藏index.php文件后,不仅让URL更加友好和简洁,同时也让URL更加通用。
提示:Ajax、SOAP、移动终端请求等许多应用是不支持PATHINFO模式的,甚至不支持普通的模式,这时使用隐藏index.php文件后的PATHINFO模式,能够让URL被任何类型的应用调用(因为会被解释成目录)。
3.REWRITE模式
REWRITE模式就是URL重写规则,它能够完全实现PATHINFO模式的所有功能,还能够利用服务器的URL重写功能,实现更完善的URL模式。REWRITE不使用PHP的PATCHINO功能,能不能支持REWRITE模式关键要看服务器支不支持RewriteRule功能(绝大多数都是支持的)。REWRITE模式需要读者额外熟悉Web服务器的各项配置,这不是本书的重点。以下.htaccess文件代码为笔者常用的REWRITE配置,它能够模拟基本的PATHINFO。
4.兼容模式
普通模式能够保证网站在所有支持PHP的Web服务器下正常运行,但是由于用户体验差,对搜索引擎不友好已经很少被采用了;而PATHINFO模式虽然有效地改善了URL形式,提高了用户体验,是所有MVC框架所采用的主流方式,但由于受限于一些服务器,PATHINFO并不能完美地让项目适用于任意场景,所以ThinkPHP提供了URL兼容模式。兼容模式能够让普通模式与PATHINFO模式互相切换,对开发者而言整个项目不需要修改代码,ThinkPHP可以智能地处理普通模式与PATHINFO模式之间的切换。兼容模式的URL表现形式如下所示。
http://tp.localhost/index.php/?s=/index/content/username/ceiba/
兼容模式结合了普通模式和PATHINFO的特点,在表现形式上是一种折中的方案,并不是好的MVC URL模式,它的最大好处就是能够确保网站运行在任何Web服务器。
事实上兼容模式本质上还是普通模式,它由参数s传递MVC所需要的参数(s参数后的分隔符由URL_PATHINFO_DEPR配置项指定),一般用于开发阶段的调试。要启用兼容模式,只需要修改配置项’URL_MODEL’=>3即可。
上述4种URL模式读者可根据需要进行选择,但无论是从用户体验还是对搜索引擎友好考虑,笔者都建议使用PATHINFO或REWRITE模式。如果需要做成全兼容的网站(如供第三方调用的接口、SOAP等)还需要隐藏入口文件(当然接来下要介绍的URL路由也是一种解决方案),为了便于讲解,统一规范,如无额外说明,本书后面的所有内容都将使用PATHINFO作为URL请求模式。
有关PHP MVC开发实战的文章
使用MVC的好处之一就是能够提供可定制化的URL形式,其中路由功能是MVC框架中最常见的功能。ThinkPHP提供了完善的URL路由功能,能够实现高度可定制的URL形式。在ThinkPHP 3.0中,URL路由规则使用URL_ROUTE_RULES数组进行配置;而在ThinkPHP 2.x中使用的是routes.php配置文件,这点需要注意。使用Web服务器URL重写大多数都是使用正则来实现路由功能的。......
2023-11-04
统一资源定位符也被称为网页地址,是用于完整地描述Internet 上网页和其他资源的地址的一种标识方法。现在它已经被万维网联盟编制为Internet 标准RFC1738 了。例如:其中“http”指使用的协议,“mail.***.com”是服务器名,“80”是端口号,“/a/j/js3/main.jsp”是路径,“?sid=SDeQWJeebVpZIlKECzee”是询问。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明,用户只要键入统一资源定位符的一部分(mail.***.com/a/j/js3/main.jsp?......
2023-11-21
S7-200 PLC的编程软件是STEP 7-Micro/WIN。此软件支持三种编程模式:STL(语句表)、LAD(梯形图)、FBD,便于用户选用,三种编程模式间可以相互转换。STEP 7-Micro/WIN需要安装、运行在使用Microsoft(微软)公司的Windows操作系统的计算机上。STEP 7-Micro/WIN V4.0可以在Microsoft公司出品的如下操作系统环境下安装:1)Windows 2000,SP3以上。本章介绍STEP 7-Micro/WIN_V40_SP9版,此软件需占用约300MB空间。......
2023-06-26
课程和自组织活动一般包含在各个项目中,由专门的义工团队和社群负责活动、课程的有序开展。·寻求有为合作的本地各行专业机构,包括公司、行政单位、工作室等。三门县的一些企业和单位也会不定期捐赠批量的书籍给我们。......
2023-07-26
U函数支持URL路由,下面将分别介绍。数组中的键值对和URL字符串中的参数与参数值是相对应的,最终上述URL在4种URL模式中的表现形式如下。s=/content/username/ceiba在生成URL参数时,可以使用数据库中的信息作为参数值。生成URL后,界面设计人员可以在视图中进行获取了,如以下代码所示。使用U函数生成URL的格式如下。......
2023-11-04
一些支持OA的非营利组织积极倡导作者保留著作权以实现开放内容、促进知识获取的目标,并且设计了一些新的出版合同模式。图3.2SURF/JISC许可出版合同样本3.2.2.2作者反要约传统出版合同往往要求作者转让全部著作权,这就严重制约了开放内容和IR的建设。作为OA运动的旗手,SPARC强调公开获取和再利用,对出版者的态度则略显强硬。......
2023-11-27
ThinkPHP经过了六年的发展,当前最新版本为3.0。最新版本提供了NoSQL、云技术、分布式支持,使得ThinkPHP的功能更加完善,能够满足大型Web应用的开发需求。ThinkPHP定位于轻量级,快速和简单是该框架的主要特点,这在本书后面的章节内容中将会明显地感受到。接下来首先对ThinkPHP处理MVC的流程作一个简单的介绍,加深对ThinkPHP的直观认识。......
2023-11-04
DM9000A的16位模式和8位模式分别如图8-22和图8-23所示,图8-22 DM9000A的16位模式DM9000A引脚功能说明如下:1.电源引脚VDD:23、30、42引脚,数字电源,3.3V电源输入。图8-23 DM9000A的8位模式3.8位模式引脚WAKE:22引脚,唤醒事件发生时发出一个唤醒信号。LED3:24引脚,全双工LED。GP1~GP3:28、29、31引脚,通用I/O引脚。在E2PROM的16位模式设置中,该引脚还作为ISA总线的IO16。EECS:21引脚,数据总线宽度。......
2023-11-20
相关推荐