1、(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式学习目标学习目标 ACTION初识 URL模式 系统常用常量1 ACTION初识初识控制器需要为每个模块定义一个控制器类,控制器类的命名规范是:模块名+Action.class.php (模块名采用驼峰法并且首字母大写)系统的默认模块是Index,对应的控制器就是项目目录下面的Lib/Action/IndexAction.class.php,类名和文件名一致。默认操作是index,也就是控制器的一个public方法。初次生成项目目录结构的时候,系统已经默认生成了一个默认控制器(就是之前看到的欢迎页
2、面),我们把index方法改成下面的代码:class IndexAction extends Action public function index() echo hello,world!; 控制器必须继承Action类,一个模块可以包括多个操作方法。如果你的操作方法是protected或者private类型的话,是无法直接通过URL访问到该操作的。(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式2.1 URL四种模式四种模式0,普通模式1,pathinfo模式2,rewrite模式3,兼容模式需要注意的是可以在项目目录中的conf/conf
3、ig.php 进行通过对URL_MODEL进行修改,可选参数0、1、2、3,代表以下四种模式: / 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式,提供最好的用户体验和SEO支持(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式2.2 URL四种模式-普通模式一、普通模式:设置URL_MODEL 为0采用传统的URL参数模式http:/serverName/appName/?m=module&a=action&id=1(第(第41讲)讲) ThinkPHP Th
4、inkPHP 系统常量及系统常量及URLURL模式模式2.3 URL四种模式四种模式-pathinfo模式模式设置URL_MODEL 为1默认情况使用PATHINFO模式,ThinkPHP内置强大的PATHINFO支持,提供灵活和友好URL支持。PATHINFO模式自动识别模块和操作,例如http:/serverName/appName/module/action/id/1/ 或者 http:/serverName/appName/module,action,id,1/在不考虑路由的情况下,第一个参数会被解析成模块名称(如果启用了分组的话,则依次往后递推),第二个参数会被解析成操作,后面的参数
5、是显式传递的,而且必须成对出现,例如:http:/serverName/appName/module/action/year/2008/month/09/day/21/其中参数之间的分割符号由URL_PATHINFO_DEPR参数设置,默认为”/”,例如我们设置URL_PATHINFO_DEPR为“-”的话,就可以使用下面的URL访问http:/serverName/appName/module-action-id-1/注意不要使用”:” 和”&”符号进行分割,该符号有特殊用途。在PATH_INFO模式下面,会把相关参数转换成GET变量,以及并入REQUEST变量,因此不妨碍URL里面的GET
6、和REQUEST变量获取。(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式2.4 URL四种模式四种模式-REWRITE模式模式设置URL_MODEL 为2该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。在开启了Apache的URL_REWRITE模块后,就可以启用REWRITE模式了,(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式2.4 URL四种模式四种模式-REWRITE模式模式通常的URL里面含有index.php
7、,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。下面是Apache的配置过程,可以参考下:1、httpd.conf配置文件中加载了mod_rewrite.so模块2、AllowOverride None 将None改为 All3、确保URL_MODEL设置为24、把下面的内容保存为.htaccess文件入口文件的同级目录下RewriteEngine onRewriteCond %REQUEST_FILENAME _dRewriteCond %REQUEST_FILENAME _f
8、RewriteRule (.*)$ index.php/$1 QSA,PT,L重启Apache之后,原来的http:/serverName/index.php/Blog/read/id/1就可以通过访问http:/serverName/Blog/read/id/1来实现(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式2.5 URL四种模式四种模式-兼容模式兼容模式设置URL_MODEL 为3兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序,还可以和URL_WRITE模
9、式整合。兼容模式URL可以支持任何的运行环境。兼容模式的效果是:http:/serverName/appName/?s=/module/action/id/1/并且也可以支持参数分割符号的定义,例如在URL_PATHINFO_DEPR为的情况下,下面的URL有效:http:/serverName/appName/?s=moduleactionid1就可以通过访问http:/serverName/Blog/read/id/1来实现(第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式3.1 路径常量路径常量CORE_PATH 系统核心类库目录 THIN
10、K_PATH.Lib/ EXTEND_PATH 系统扩展目录 THINK_PATH.Extend/ MODE_PATH 模式扩展目录 EXTEND_PATH.Mode/ ENGINE_PATH 引擎扩展目录 EXTEND_PATH.Engine/ VENDOR_PATH 第三方类库目录 EXTEND_PATH.Vendor/ LIBRARY_PATH 系统扩展类库目录 EXTEND_PATH.Library/ COMMON_PATH 项目公共目录 APP_PATH.Common/ LIB_PATH 项目类库目录 APP_PATH.Lib/ RUNTIME_PATH 项目运行时目录 APP_PA
11、TH.Runtime/ CONF_PATH 项目配置目录 APP_PATH.Conf/ LOG_PATH 项目日志目录 RUNTIME_PATH.Logs/ CACHE_PATH 项目模板缓存目录 RUNTIME_PATH.Cache/ LANG_PATH 项目语言包目录 APP_PATH.Lang/ TEMP_PATH 项目缓存目录 RUNTIME_PATH.Temp/ DATA_PATH 项目数据目录 RUNTIME_PATH.Data/ TMPL_PATH 项目模板目录 APP_PATH.Tpl/ HTML_PATH 项目静态缓存目录 APP_PATH.Html/ (第(第41讲)讲)
12、ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式3.2 系统常量系统常量IS_CGI 是否属于 CGI模式 IS_WIN 是否属于Windows 环境 IS_CLI 是否属于命令行模式 _ROOT_ 网站根目录地址 _APP_ 当前项目(入口文件)地址 _GROUP_ 当前分组的URL地址 _URL_ 当前模块的URL地址 _ACTION_ 当前操作的URL地址 _SELF_ 当前URL地址 _INFO_ 当前的PATH_INFO字符串 _EXT_ 当前URL地址的扩展名 APP_NAME 当前项目名 GROUP_NAME 当前分组名 MODULE_NAME 当前模
13、块名 ACTION_NAME 当前操作名 APP_DEBUG 是否开启调试模式 (第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式3.2 系统常量系统常量MODE_NAME 当前模式名称 APP_PATH 当前项目路径 THINK_PATH 系统框架路径 MEMORY_LIMIT_ON 系统内存统计支持 RUNTIME_FILE 项目编译缓存文件名 THEME_NAME 当前主题名称 THEME_PATH 当前模板主题路径 APP_TMPL_PATH 当前模板URL路径 LANG_SET 当前浏览器语言 MAGIC_QUOTES_GPC MAGIC_QUOTES_GPC NOW_TIME 当前请求时间(3.1新增) IS_GET 当前是否GET请求(3.1新增) IS_POST 当前是否POST请求(3.1新增) IS_PUT 当前是否PUT请求(3.1新增) IS_DELETE 当前是否DELETE请求(3.1新增) IS_AJAX 当前是否AJAX请求(3.1新增) (第(第41讲)讲) ThinkPHP ThinkPHP 系统常量及系统常量及URLURL模式模式