1、ThinkPHP入门文档一、 下载与安装1、从ThinkPHP官网上下载一个相对稳定的版本,这里推荐3.0版本。2、下载后的压缩包中有个ThinkPHP文件夹,我们要做的就是把这个文件夹直接拷贝到自己项目的根目录下。3、 创建入口文件通常一个网站项目都会分为前台与后台两个部分,所以这里我们需要创建2个入口文件,但在此之前,我们要建立好目录。在项目根目录下分别创建以下目录:Admin存放所有后台文件Home存放所有前台文件Public存放所有公共资源Upload存放用户上传的资源下面开始正式创建入口文件了,入口文件的意思就是,所有的操作必须基于这个文件。首先,我们在Home目录中,新建一个ind
2、ex.php文件来作为网站前台的入口文件,这个文件中只需包含下面的代码(红框部分)就行了。然后可以试着运行下这个文件,在浏览器中输入http:/localhost/framedemo/Home/index.php如果能看到下面的结果,就表示入口文件创建成功了。这里要注意下,thinkphp在创建入口文件的过程中,同时也会在我们的项目中自动生成一些目录,它的目录结构如下:Admin中入口文件的创建与此类似,这里不再赘述。二、 代码编写Thinkphp中数据的展示将不再放在php中,而是由html模版代替。所以Thinkphp中代码的编写主要基于两种文件,一种是html类型的模版文件,一种是php
3、类型的后台处理文件,这点跟Struts框架很类似,html模版文件相当于jsp,而php则相当于action。另外,还有一个地方也需要格外注意,就是文件的命名。下面通过表格来看下两种文件的命名方式。php文件html模版文件文件名类名+Actionphp类中的方法名后缀名.class.php.html所在目录/Lib/Action/Tpl/default/php类名上面这种命名方式与Struts2.x的动态配置也如出一辙,都秉承了一个重要的原则,即约定大于编码。注意:所有的控制器必须继承Action类,该类位于/ThinkPHP/Lib/Core/目录下三、 导入第三方类库thinkphp框架
4、中,导入类库有两种方式,import和vendor。他们的区别如下:import:主要导入以.class.php结尾的类库和文件vendor:默认的导入路径为 ThinkPHP系统目录/Vendor 目录,默认后缀为.php 。为了引用上的方便,我们通常将第三方类库统一放在ThinkPHP系统目录/Vendor 下面,然后通过下面的方式来导入:vendor(目录名.文件名);注意:这里的文件名不用包含后缀,如果文件名去除后缀后还包含了.号,则点号可以用#号来代替。四、 传递参数在类名/方法名的后面直接带上参数值即可,不用写参数名,格式如下:类名/方法名/参数1/参数2/多个参数之间默认以/来分
5、隔,分隔符在配置文件中可以更改。五、 获取url参数1、 获取get方式参数$_GET_URL_下标;这里的下标通常从2开始,0 表示类名,1 表示类中的方法名。2、 获取post方式参数$_POST表单中的元素名称;六、 页面跳转1、redirect方式redirect($class,$method,$params=array(),$delay=0,$msg=)参数含义如下:$class:类名$method :方法名$params :参数$delay :延时,单位秒$msg :跳转过程中的提示信息七、 将信息输出到模版php的action中向模版输出信息可以通过下面这种方式:1、设置模版变量
6、$this-assign($result, $list);$result:模版变量名$list:数据这种方式与java中的的request.setAttribute(key,value);非常类似。但是也有个区别,注意这里的$result参数,它既可以是一个字符串变量,也可以是一个数组变量,如果是数组变量,则无须传入第二个参数。示例如下:/采用数组方式输出多个变量$tplArray = array();$tplArray$result = $list;$tplArraypageStr = $pageStr;$this-assign($tplArray);2、 输出$this-display()
7、;八、 模版中获取后台数据1、字符串型数据$模版变量名称2、 数组型数据$循环变量.字段名称3、 判断模版变量是否为空为空不为空与else合并用法为空不为空4、条件判断之if5、条件判断之switch输出内容默认情况6、日期格式化$日期变量|date=Y-m-d H:i:s,#7、数值格式化$数值|number_format=小数位数 8、在模版中定义变量9、变量比较在thinkphp框架中,if和eq都可以用于变量的比较。区别在于:if标签仅用于单个变量和一个常量的比较,而eq标签不仅可以比较单个变量和一个常量,还可以比较两个变量,这点请切记!示例:比较单个变量比较两个变量注意点:name属
8、性里不用加$符号,而value属性需要加上$符号。10、导入模版文件Thinkphp模版中通过标签来导入模版文件,示例:如果导入的模版文件与主文件属于同一个模块,则file属性中的类名与冒号可以省略。注意点:如果被导入的模版中仅仅是包含了一些静态信息,那么通过上面这一步,模版中的内容应该就可以成功载入了,但是,很多情况下,被导入的模版包含的信息是动态的,这个时候,我们需要在后台为导入的模版提供相关数据,方式如下:R(类名/方法名,参数);这个方法的意思就是,在本类中调用其它类中的方法。11、模版中获取session$_SESSION.session名称九、 基础配置在入口文件所在目录中,有一个
9、Conf目录,该目录下有个config.php文件,用户自定义的配置都写在该文件中。/* 数据库配置 */DB_TYPE= mysql, /使用的数据库类型 DB_HOST= 192.168.1.111, /数据库主机 DB_NAME = logomo, /数据库名 DB_USER = root, /数据库账号 DB_PWD = admin, /数据库密码 DB_PORT = 3309, /数据库端口/* 程序配置 */ TOKEN_ON = true, /是否开启令牌验证 URL_MODEL = 3, /URL模式:0普通模式 1PATHINFO 2REWRITE 3兼容模式URL_PATH
10、INFO_DEPR= /,/PATHINFO URL 模式下,各参数之间的分割符号DEFAULT_THEME= default,/默认模板主题URL_HTML_SUFFIX= .html,/URL伪静态后缀设置DEFAULT_CHARSET= utf-8, /默认输出编码DEFAULT_TIMEZONE= PRC,/默认时区/数据返回格式,默认AJAX,可选JSON、XML .DEFAULT_AJAX_RETURN= JSON,DEFAULT_APP= /framedemo,/设置项目名称/* 缓存设置 */关闭模板编译缓存,false表示每次都重新编译模板TMPL_CACHE_ON= fal
11、se, ACTION_CACHE_ON = false, /默认关闭Action 缓存HTML_CACHE_ON = false, /默认关闭静态缓存HTML_CACHE_TIME = 60, /静态缓存有效期HTML_READ_TYPE = 0,/静态缓存读取方式 0 readfile 1 redirectHTML_FILE_SUFFIX = .shtml,/默认静态文件后缀/* 模版标签设置 */TMPL_L_DELIM= ,/模版中普通标签开始标记TMPL_R_DELIM= ,/模版中普通标签结束标记/* 错误设置 */错误显示信息,非调试模式有效ERROR_MESSAGE = 您浏览的
12、页面暂时发生了错误!请稍后再试, ERROR_PAGE= ,/ 错误定向页面/* 网站设置 */SITE_TITLE = 标镜网,/网站title十、 隐藏入口文件假定原访问地址为:http:/localhost/logomirror/Home/index.php/User/showUser实现效果:http:/localhost/logomirror/Home/User/showUser即隐藏入口文件index.php。实现步骤:1、 修改Apache中的httpd.conf文件1) 、开启mod_rewrite.so 模块将LoadModule rewrite_module modules
13、/mod_rewrite.so这句话前面的#去掉即可。2) 、修改AllowOverride属性找到类似于下面这句话,即apache服务器部署项目的根目录,这个标记里面有个AllowOverride属性,它的本来属性值是None,我们需要把它改为FileInfo Options。2、 添加.htaccess文件在入口文件的所在目录中,即与入口文件平级处,添加一个.htaccess文件,文件的内容为:Options +FollowSymLinksRewriteEngine onRewriteCond %REQUEST_FILENAME !-dRewriteCond %REQUEST_FILENA
14、ME !-fRewriteRule (.*)$ 入口文件名称/$1 QSA,PT,L注意:Windows环境中如果无法直接创建.htaccess文件,我们可以绕个弯路,先随便创建一个文本文件,然后另存为.htaccess类型即可,如下图:3、 更改url访问模式在config.php配置文件中,将URL_MODEL的值改为2,即REWRITE模式。至此,项目的入口文件成功隐藏。效果如下:十一、 模版常用系统常量1、获取项目名称$Think.config.DEFAULT_APPDEFAULT_APP的内容由我们在config.php这个文件中事先配置。2、 获取当前访问的类名$Think.MOD
15、ULE_NAME3、 获取当前访问的方法名$Think.ACTION_NAME4、获取入口文件的根目录名称$Think.APP_NAME5、 获取入口文件根目录的绝对路径$Think.APP_PATH十二、 自定义错误页面1、404错误页面404表示请求的资源不存在,thinkphp框架通过在action中定义一个_empty方法来实现404错误页面的定制,该方法中只需要一个跳转语句就可以了,如下:header(Location:错误页面所在路径);注意:我们通常是在一个公共的action中定义_empty方法,其它action只要继承这个公共的action就可以了。2、500及其它错误页面500表示服务器内部产生了错误,再通俗一点讲就是,程序错误。要想定制500错误页面,我们需要修改config.php这个配置文件,在这个文件中加入下面这句话:ERROR_PAGE= 错误页面所在路径路径最好用绝对路径。这样,当我们的程序发生错误时,系统就会自动跳转到我们自定义的页面。但是有个前提,就是必须关闭调试模式,否则无法实现上面的效果。define(APP_DEBUG,false);