一:thinkphp文件结构
Application目录下:
ThinkPHP目录下:
Conf目录下:
补充:
在ThinkPHP中除了这个conventionphp配置文件之外,还有其他的配置文件,但是conventionphp这个文件是系统级别的配置文件,还有一个是应用级别的配置文件,最后还有一个分组级别的配置文件。
从作用范围上来说:
系统
> 应用 >分组
从优先级上说:
分组
> 应用 >系统
Library目录下:
Think目录下:
二:控制器
1.命名规则:控制名(英文首字母大写)+Controller关键词+.class.php
2.命名空间:第一:命名空间是在php5.3版本中引入的一个概念,所以ThinkPHP3.2.3要求大于等于5.3版本的php。第二:命名空间本身跟目录没有关系,但是在ThinkPHP中命名的声明和使用必须跟目录挂钩。
三:路由形式
1.路由:是指访问项目中具体某个方法的URL地址。
在ThinkPHP中系统提供了4种路由形式:
• 普通形式路由
• Pathinfo形式路由
• Rewrite形式路由
• 兼容形式路由
路由形式在ThinkPHP系统中的配置文件是可以配置选择的,在ThinkPHP/Conf/convention.php中的"URL_MODEL"配置项有0,1,2,3四种选择,分别对应4种路由形式。
1.普通形式路由(get形式路由)
路由形式:http://网址/入库文件?m=分组名&c=控制器名&a=方法名&参数名=参数值
2.pathinfo路由形式(默认的,最常用的)
路由形式:http://网址/入口文件/分组名/控制器名/方法/参数名1/参数值1/参数名2/参数值2
3.rewrite路由形式
路由形式:http://网址/分组名/控制器名/方法/参数名1/参数值1/参数名2/参数值2
和ThinkPHP默认的路由形式相比就是只缺少了入口文件。注意:该路由形式不能直接使用,需要配置完成才能使用。这种路由形式需要Apache的支持,而除了Apache软件之外服务器软件还有nginx、lightd等等,所以第三种路由形式一般情况下不推荐使用。
4.兼容路由形式
路由形式:http://网址/入口文件?s=/分组名/控制器名/方法名/参数名1/参数值1
注意:兼容路由形式只有1个参数,参数名是s,等于号后面的都是s参数的值
三:分组
分组:一般的项目都会根据某个功能的使用对象来区分代码,这个时候放到一起之后会形成一个文件夹,这个文件夹就可以称之为分组。分组就是我们通常所指的平台(前台、后台)。
例如ThinkPHP系统中Home目录就是一个分组目录。后期如果需要使用更多的分组,则需要自己去创建分组。通常我们会创建一个和Home分组同级的Admin分组做为后台。
四:控制器中的跳转
1.URL组装:Url组装就是根据某个规则,来组成一个url地址,这个功能就叫做url组装。
在ThinkPHP中,系统提供了一个封装的函数来处理url的组装,这个方法叫做U方法。在系统的函数库文件中(functions.php)
U语法格式:U(‘URL路径’,参数数组);
通用格式:U("[分组名/控制器名/]方法名",array("参数名1"
=>参数值1,"参数名2"
=>参数值2));
2.系统跳转方法
成功:$this -> success(跳转提示,跳转地址,等待时间);
失败:$this -> error(跳转提示,跳转地址,等待时间);
跳转提示参数必须要有,后面的地址和时间可以没有,如果没有指定跳转地址,则跳转到上一页。
五:ThinkPHP中的视图
1.视图的创建:创建的位置需要是在分组目录下的View目录下与控制器同名的目录中。
2.视图的展示:展示当前控制器下与当前请求方法名称一致的模版文件
$this -> display(‘模版文件名[不带后缀]’);
展示当前控制器下的指定模版文件
$this -> display(‘View目录下的目录名/模版文件名[不带后缀]’);
展示指定控制器目录下的指定模版文件
3.变量分配
在ThinkPHP中系统封装好了一个变量的分配方法,这个方法叫做assign。具体语法:
$this -> assign(‘模版中变量名’,$php中的变量名);
说明:一般情况两个参数的变量都是一样的。这样方便检查。
4.模板常量替换机制
在ThinkPHP中系统默认给我们提供以下几个常用的模版常量:
__MODULE__:表示从域名后面开始一直到分组名结束的路由
__CONTROLLER__:表示从域名后面开始一直到控制器结束的路由
__ACTION__:表示从域名后面开始一直到方法名结束的路由
__PUBLIC__:站点根目录下的Public目录的路由
__SELF__:表示从域名后面开始一直到路由的最后(如果没有参数,则__SELF__和__ACTION__所表达的内容是一样的)
为了后期使用的方便,我们可以在配置文件中定义一个自定义的模版常量:例子:
//模板常量"TMPL_PARSE_STRING"=>array("__ADMIN__"=>__ROOT__."/Public/Admin"),
六:开启调试模式
调试模式是在我们开发阶段开启的,开发完成后要关闭的
1.在入口文件(index.php)的位置定义:define("APP_DEBUG",True);
2.在Application/Common/Conf/config.php里面添加配置项:"SHOW_PAGE_TRACE" => TRUE ;
网页右下角就会出现如上的小图标,点击小图标会出现:
里面有各种信息,方便调试。
还有在开发阶段,我们应该将错误信息显示出来,我们可以在调试模式开启的前提下,设置ThinkPHP/Conf/convention.php中的"SHOW_ERROR_MSG"设置为true.
七:关于配置
注:在开发的时候,不到万不得已不要去修改系统配置文件。可以将需要修改的配置项在分组/应用级别的配置文件中去定义!
1.ThinkPHP框架中所有配置文件的定义格式均采用返回PHP数组的方式;
2.3.2.2版本开始,配置文件增加yaml/json/xml/ini以及自定义格式支持(需要在入口文件出配置)。
3.配置加载的顺序:惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置,
后面的配置会覆盖之前的同名配置。
惯例配置:ThinkPHP/Conf/convention.php 整个系统的配置文件,不建议修改
应用配置:Application/Common/Conf/config.php 所有模块的公共配置文件
模式配置(可选):Application/Common/Conf/config_应用模式名称.php 仅在运行该模式下面才会加载
状态配置(可选):在入口文件定义:define("APP_STATUS","???");
然后在Application/Common/Conf/???.php
模块配置(可选):每个模块会自动加载自己的配置文件(位于Application/当前模块名/Conf/config.php)
也可以为应用模式单独定义配置文件 命名规范为:Application/当前模块名/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。
模块还可以支持独立的状态配置文件 命名规范为:Application/当前模块名/Conf/应用状态.php
之前的方式都是通过预先定义配置文件的方式,而在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置),主要是指那些还没有被使用的参数。
动态配置:设置新的值:C("参数名称","新的参数值");
扩展配置:可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。
// 加载扩展配置文件"LOAD_EXT_CONFIG"=>"user,db",
假设扩展配置文件user.php 和db.php分别用于用户配置和数据库配置,这样做的好处是哪怕以后关闭调试模式,你修改db配置文件后依然会自动生效。
4.读取配置
无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法来读取已有的配置。
语法:获取已经设置的参数值:C("参数名称")
5.C配置方法支持批量配置
八:一些配置的小细节(持续补充ing...)
1.在ThinkPHP/Conf/convention.php中我们可以设置模板引擎普通标签标记
"TMPL_L_DELIM"=>"
"TMPL_R_DELIM"=>"}>"
这样修改的好处在于:为了和jQuery区分