1、前言TP 的手册相当多,其实不必再出这样的贴子,论技术,我也是菜鸟一个,同时也在学习当中。看到论坛上多了不少新朋友,不少在抱怨手册看不懂,那我就姑且抛砖引玉,尝试与新朋友们更简单地、手把手地进入 TP 的应用中去。讲解过程中有错的地方,大家帮忙指正。这个系列,初步定下的目标为,从零开始,以 TP 示例中心中的 Form 为例进行讲解,以实践为主,理论为辅,将 TP 的最基本内容逛一遍,至少让我们一起学会如何进行最简单的对数据进行查、增、改、删操作并输出到模板。由于我们说的是循序渐进,所以我用步骤式来说明,只要一步一步跟着做,相信聪明的你在使用过程中就会明白 TP 的应用了。注意:以下的步骤,仅
2、仅是 TP 灵活的布署方式其中一种,实际开发中可以根据自己的情况去另行设定。至于为什么那样做,我们会在最后再作总结,我觉得先实操然后再进行说明比较容易明白。以下不再重复解释。一 快速开始一个项目名词解释: 项目:你要开发的系统,称之为项目。入口文件:你可以理解为这个项目的唯一的一道门,以后所有的操作都会通过这道门去执行处理。不必理会什么意思,你甚至可以先把它看成是 index.php就是入口文件TP: ThinkPHP 框架的简称1 下载 TP1.5 正式版2 拟好你的项目名称,我们这里以 Myapp 为项目名称3 在 www 根目录下,将 TP 框架所有文件全部复制过去,文件夹名称是Thin
3、kPHP4 与 ThinkPHP 同级新建一个文件夹,起名为 Myapp,也就是项目名称5 在 www 根目录下,创建一个 PHP 文件,起名 index.php,这就是入口文件入口文件 index.php 代码: run();?就这么简单几行,然后打开浏览器,输入 http:/127.0.0.1/一个 TP 项目就这样构建出来了。你会看到 _ Hello,欢迎使用 ThinkPHP!这行字。并自动为你创建好项目的目录。接下来,我们这个项目添砖加瓦。二 简单认识项目里的各个文件夹名词解释: Action:模块控制器类,你暂时可以理解为一个 Action 文件代表着一个应用模块,Action 文
4、件中的每一个方法(function)代表着一个操作,操作分为有输出到模板的操作和只具执行不需要输出的操作。对于有输出的操作,则代表了你的项目中一个展示给用户应用的 web 页面。(注意:这不是正统的术语解释)Model:数据表相对应的 Model 类,可以理解为一个 Model 文件对应着你项目数据库的其中一个表。命名关系请参看这里:http:/ Myapp 文件夹,里面 TP 已让你很省心地构建了最基本的目录。其中: Cache 文件夹:项目自动生成的模版缓存会出现在这里Common 文件夹:你的项目中要用到的自己写的函数,可以在这个文件夹下创建一个名为 common.php 文件,在这个文
5、件中书写函数,这些函数可以用在你项目的各个类,同时也可以在模板变量中使用,TP 框架会自动加载。Conf 文件夹:项目的运行配置文件 config.php 将放在这个文件夹里,(还有路由配置,调试配置等,请先忽略)Data 文件夹:TP 会把项目的数据库表字段生成到这里,另外。那些先不必理会。Lang 文件夹:项目的语言设置目录,先不必理会。Lib 文件夹:应用类库目录,在这文件夹内还有两个文件夹:Action 和Model,Action 目录放置命名为 xxxAction.class.php 的控制器文件,Model 目录放置对应数据库表的命名为 xxxModel.class.php 的类文
6、件。Logs 文件夹:项目中自动产生的日志文件会存放在这里。暂不必理会。Temp 文件夹:数据缓存目录,存放项目中自动生成的项目运行缓存文件等,以及使用文件方式时的缓存文件等Tpl 文件夹:模板文件目录,内有一个 default 文件夹,也就是默认的风格项目生成的目录结构就先简单介绍到这里,下一步我们要简单地对项目进行最基本的配置。三 创建数据表,并对项目进行配置,以便连接到数据库。1 我们这里使用的是 Mysql 数据库,利用 PhpMyadmin 新建一个数据库,名称为myapp。使用示例中心中的 sql 如下: CREATE TABLE think_form (id smallint(4
7、) unsigned NOT NULL auto_increment,title varchar(255) NOT NULL,content varchar(255) NOT NULL,create_time int(11) unsigned NOT NULL,update_time int(11) unsigned NOT NULL,status tinyint(1) unsigned NOT NULL,email varchar(50) NOT NULL,PRIMARY KEY (id) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;2 在 Conf 文件夹内,建
8、立一个 config.php 文件。这个文件,就是 Myapp 项目的配置文件。系统会自动加载config.php 文件中的配置是以数组返回方式进行定义,会覆盖 TP 框架中的common 目录下 convention.php 的默认配置。没有设置的配置,就以默认为准。配置设置可以利用 C 函数动态改变,暂且不必理会。而我们连接到数据库的设置也是在这个文件中书写。config.php 代码如下: mysql, / 使用的数据库是 mysqlDB_HOST=localhost,DB_NAME=myapp,/ 数据库名DB_USER=root,DB_PWD=123456,/ 填写你连接数据库的密码
9、DB_PORT=3306,DB_PREFIX=think_, / 数据表表名的前缀 请参看 http:/ 在 Lib/Model 目录下,创建一个文件,命名为 FormModel.class.php。命名规则刚才你已看了两次。这里就不再多说,我们可以看到,数据表名是 think_form,由于我们配置了数据表表名的前缀为 think_,所以文件的命名直接使用 “不含前缀的数据表表名+Model.class.php“就行了。在这个文件中书写代码: 就这样定义一个类名就行了。该类继承了 Model 类。至于自动验证,自动过滤,自动填充这些,暂且不理会。4 提前先爽一下吧。再次利用 PhpMyAdm
10、in,在该表中插入一些数据sql 如下: INSERT INTO think_form (id, title, content, create_time, update_time, status, email) VALUES(1, 这是测试数据 , dfdf, 1212724876, 0, 1, );然后我们打开 Myapp/Lib/Action/IndexAction.class.php 文件,将里面的内容删掉。改成下面这样: findall();dump ($form);exit;?打开浏览器,输入 http:/127.0.0.1/,看,数据给输出来了。PHP 开发,无非是对数据库使用了逻
11、辑控制的增删改查和使用模板输出数据内容。通常数据的插入都是通过表单来进行添加。表单提交涉及到页面显示,所以这一节我们暂时放下对数据库的操作讲解,先来简单学习一下 TP 的模板引擎的变量输出。第四节 简单了解 TP 的模板输出上一章节我们提及到, TP 中的每一个 xxxAction.class.php 文件代表着一个应用模块,此 Action 中的每一个方法(function)代表着一个操作,操作分为有输出到模板的操作和只具执行不需要输出的操作。打开 Myapp/Lib/Action/IndexAction.class.php 文件,我们看看里面的基础代码 class IndexAction
12、extends Actionpublic function index()理论知识:1 在 TP 开发中,要增加一个应用模块,就在 Action 文件夹里建立一个类,类的文件命名格式是模块名称+Action.class.php。例如我们这里的应用模块是Index,所以定义文件名为 IndexAction.class.php2 应用模块类的定义要继承框架的 Action 类。要为这个应用模块添加一个操作,则定义一个以此操作为命名的 function.例如上面的 index 操作。通常一个应用模块中,会有若干操作(function)需要有与用户交互的页面,这就需要用到模板输出, TP 本身已内置了
13、一套具有 TP 特色的,很强大易扩展但应用非常方便兼简单的模板引擎。在应有模块中,如果某个操作是需要页面显示的,只要对应在Myapp/Tpl/default/里建立一个文件夹,文件夹以应用模块的名称来命名,然后在这个文件夹下,建立一个以这个 function 名称来命名的 html 文件,就可以在这个方法中使用$this-display()方法来直接调用该模板。(当然也可以调用其它模块下的其它模板或显式指定模板文件位置和名称,由于是循序渐进式的学习,就让我们先忽略吧)了解这些理论后,我们先简单实操一下这些知识。1 在 Myapp/Tpl/default/下建立一个文件夹,根据应用模块的名称,我
14、们将这个文件夹命名为 Index2 在 Myapp/Tpl/default/Index/下建立一个 html 文件,根据操作名称,我们命名该文件为 index.html3 打开 Myapp/Lib/Action/IndexAction.class.php 文件,修改代码为 assign(name,$value);$this-display();?代码知识要点(摘自手册:ThinkPHP 模板指南,此后的知识要点均来自 TP 官方手册,不再申明)在 Action 类里面使用 assign 方法对模板变量赋值,无论何种变量类型都统一使用 assign 赋值。 $this-assign(name,$
15、value);/ 下面的写法是等效的 $this-name = $value ;/ 模板变量赋值后就需要调用模板文件来输出相关的变量,模板调用通过display 方法来实现 $this-display();4 打开 Myapp/Tpl/default/Index/index.html 文件,代码为 $name测试输出: $name代码知识要点:模板变量使用$变量名称这种标签进行输出。不同的模板变量类型,使用不同的标签,标签可以自行另外定义,暂且不理会。5 打开浏览器输入地址:http:/127.0.0.1/,我们可以看到,定义的模板变量已经输出来了。附加补充知识:1 如果要同时输出多个模板变量
16、,可以使用下面的方式: $array = array();$arrayname = thinkphp;$arrayemail = ;$arrayphone = 12335678;$this-assign($array);这样,就可以在模板文件中同时输出 name、email 和 phone 三个变量。2 我们使用上面的变量定义,将整个数组定义为一个模板变量来输出 $array = array();$arrayname = thinkphp;$arrayemail = ;$arrayphone = 12335678;$this-assign(array,$array);$this-display();在 html 中,要输出$arrayname的值,代码是 $array.name 或 $arrayname3 将这个数组循环输出3.1 IndexAction.class.php 中代码更改如下 assign(array,$array);$this-assign(name,$value);$this-display();