php框架ThinkPHP代码分析核心解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言
TP的手册相当多,其实不必再出这样的贴子,论技术,我也是菜鸟一个,同时也在学习当中。看到论坛上多了不少新朋友,不少在抱怨手册看不懂,那我就姑且抛砖引玉,尝试与新朋友们更简单地、手把手地进入TP的应用中去。讲解过程中有错的地方,大家帮忙指正。
这个系列,初步定下的目标为,从零开始,以TP示例中心中的Form为例进行讲解,以实践为主,理论为辅,将TP的最基本内容逛一遍,至少让我们一起学会如何进行最简单的对数据进行查、增、改、删操作并输出到模板。
由于我们说的是循序渐进,所以我用步骤式来说明,只要一步一步跟着做,相信聪明的你在使用过程中就会明白TP的应用了。
注意:以下的步骤,仅仅是TP灵活的布署方式其中一种,实际开发中可以根据自己的情况去另行设定。至于为什么那样做,我们会在最后再作总结,我觉得先实操然后再进行说明比较容易明白。以下不再重复解释。
一快速开始一个项目
名词解释:
项目:你要开发的系统,称之为项目。
入口文件:你可以理解为这个项目的唯一的一道门,以后所有的操作都会通过这道门去执行处理。不必理会什么意思,你甚至可以先把它看成是index.php就是入口文件
TP: ThinkPHP框架的简称
1 下载TP1.5正式版
2 拟好你的项目名称,我们这里以 Myapp 为项目名称
3 在www根目录下,将TP框架所有文件全部复制过去,文件夹名称是ThinkPHP
4 与ThinkPHP同级新建一个文件夹,起名为 Myapp,也就是项目名称
5 在www根目录下,创建一个PHP文件,起名index.php,这就是入口文件
入口文件index.php代码:
// 定义ThinkPHP路径
define('THINK_PATH','./ThinkPHP');
// 定义项目名称
define('APP_NAME','Myapp');
// 定义项目路径
define('APP_PATH','./Myapp');
// 加载入口文件
require(THINK_PATH.'/ThinkPHP.php');
// 实例化这个项目
$App = new App();
// 执行初始化
$App->run();
>
就这么简单几行,然后打开浏览器,输入http://127.0.0.1/
一个TP项目就这样构建出来了。你会看到
^_^ Hello,欢迎使用ThinkPHP!
这行字。并自动为你创建好项目的目录。接下来,我们这个项目添砖加瓦。
二简单认识项目里的各个文件夹
名词解释:
Action:模块控制器类,你暂时可以理解为一个Action文件代表着一个应用模块,Action 文件中的每一个方法(function)代表着一个操作,操作分为有输出到模板的操作和只具执行不需要输出的操作。对于有输出的操作,则代表了你的项目中一个展示给用户应用的web 页面。(注意:这不是正统的术语解释)
Model:数据表相对应的Model类,可以理解为一个Model文件对应着你项目数据库的其中一个表。命名关系请参看这里:/Article/10
在添砖加瓦之前,我们有必要认识一下各个文件夹的用途。
打开Myapp文件夹,里面TP已让你很省心地构建了最基本的目录。其中:
Cache文件夹:项目自动生成的模版缓存会出现在这里
Common文件夹:你的项目中要用到的自己写的函数,可以在这个文件夹下创建一个名为common.php文件,在这个文件中书写函数,这些函数可以用在你项目的各个类,同时也可以在模板变量中使用,TP框架会自动加载。
Conf文件夹:项目的运行配置文件config.php将放在这个文件夹里,(还有路由配置,调试配置等,请先忽略)
Data文件夹:TP会把项目的数据库表字段生成到这里,另外。。。那些先不必理会。Lang文件夹:项目的语言设置目录,先不必理会。
Lib文件夹:应用类库目录,在这文件夹内还有两个文件夹:Action和Model,Action目录放置命名为xxxAction.class.php的控制器文件,Model目录放置对应数据库表的命名为xxxModel.class.php的类文件。
Logs文件夹:项目中自动产生的日志文件会存放在这里。暂不必理会。
Temp文件夹:数据缓存目录,存放项目中自动生成的项目运行缓存文件等,以及使用文件方式时的缓存文件等
Tpl文件夹:模板文件目录,内有一个default文件夹,也就是默认的风格
项目生成的目录结构就先简单介绍到这里,下一步我们要简单地对项目进行最基本的配置。三创建数据表,并对项目进行配置,以便连接到数据库。
1 我们这里使用的是Mysql数据库,利用PhpMyadmin新建一个数据库,名称为myapp。
使用示例中心中的sql如下:
CREATE TABLE `think_form` (
`id` smallint(4) 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文件夹内,建立一个config.php文件。这个文件,就是Myapp项目的配置文件。系统会自动加载
config.php文件中的配置是以数组返回方式进行定义,会覆盖TP框架中的common目录下convention.php的默认配置。没有设置的配置,就以默认为准。配置设置可以利用C函数动态改变,暂且不必理会。
而我们连接到数据库的设置也是在这个文件中书写。
config.php代码如下:
if (!defined('THINK_PATH')) exit();
return array(
'DB_TYPE'=>'mysql', // 使用的数据库是mysql
'DB_HOST'=>'localhost',
'DB_NAME'=>'myapp',// 数据库名
'DB_USER'=>'root',
'DB_PWD'=>'123456',// 填写你连接数据库的密码
'DB_PORT'=>'3306',
'DB_PREFIX'=>'think_', // 数据表表名的前缀请参看/Article/10
);
>
暂时就是这样,后面会再根据需要进一步添加和讲解。
3 在Lib/Model目录下,创建一个文件,命名为FormModel.class.php。命名规则刚才你已看了两次。
这里就不再多说,我们可以看到,数据表名是think_form,由于我们配置了数据表表名的前缀为think_,所以文件的命名直接使用 "不含前缀的数据表表名+Model.class.php"就行了。
在这个文件中书写代码:
class FormModel extends Model {
}
>
就这样定义一个类名就行了。该类继承了Model类。至于自动验证,自动过滤,自动填充这些,暂且不理会。
4 提前先爽一下吧。再次利用PhpMyAdmin,在该表中插入一些数据
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文件,将里面的内容删掉。改成