一:thinkphp文件结构
Application目录下:
ThinkPHP目录下:
Conf目录下:
补充:
在ThinkPHP中除了这个convention.php配置文件之外,还有其他的配置文件,但是convention.php这个文件是系统级别的配置文件,还有一个是应用级别的配置文件,最后还有一个分组级别的配置文件。
从作用范围上来说:
系统 > 应用 >分组
从优先级上说:
分组 > 应用 >系统
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(‘模版文件名[不带后缀]’); 展示当前控制器下的指定模版文件
$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区分