没有合适的资源?快使用搜索试试~ 我知道了~
php框架ThinkPHP代码分析核心解析.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 149 浏览量
2021-11-25
10:10:19
上传
评论
收藏 149KB PDF 举报
温馨提示
试读
34页
php框架ThinkPHP代码分析核心解析.pdf
资源推荐
资源详情
资源评论
前言
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 代码:
<?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 文件对应着你项目数据库的其中
一个表。命名关系请参看这里: http://thinkphp.cn/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 代码如下:
<?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_', // 数 据 表 表 名 的 前 缀 请 参 看
http://thinkphp.cn/Article/10
);
?>
暂时就是这样,后面会再根据需要进一步添加和讲解。
3 在 Lib/Model 目录下,创建一个文件,命名为 FormModel.class.php 。命名规则刚才你已
看了两次。
这里就不再多说,我们可以看到,数据表名是 think_form ,由于我们配置了数据表表名的
前缀为 think_ ,所以文件的命名直接使用 " 不含前缀的数据表表名 +Model.class.php" 就行
了。
在这个文件中书写代码:
<?php
class FormModel extends Model {
}
?>
就这样定义一个类名就行了。 该类继承了 Model 类。至于自动验证, 自动过滤, 自动填充这
些,暂且不理会。
4 提前先爽一下吧。再次利用 PhpMyAdmin,在该表中插入一些数据
sql 如下 :
INSERT INTO `think_form` (`id`, `title`, `content`, `create_time`,
`update_time`, `status`, `email`) VALUES
然后我们打开 Myapp/Lib/Action/IndexAction.class.php 文件,将里面的内容删掉。改成
下面这样:
<?php
class IndexAction extends Action{
public function index(){
$form = D('Form')->findall();
dump ($form);
exit;
}
}
?>
打开浏览器,输入 http://127.0.0.1/ ,看,数据给输出来了。
PHP开发,无非是对数据库使用了逻辑控制的增删改查和使用模板输出数据内容。
通常数据的插入都是通过表单来进行添加。表单提交涉及到页面显示,
所以这一节我们暂时放下对数据库的操作讲解,先来简单学习一下 TP的模板引擎的变量输
出。
第四节 简单了解 TP 的模板输出
上一章节我们提及到, TP 中的每一个 xxxAction.class.php 文件代表着一个应用模块,此
Action 中的每一个方法 (function) 代表着一个操作,操作分为有输出到模板的操作和只具
执行不需要输出的操作。
打开 Myapp/Lib/Action/IndexAction.class.php 文件,我们看看里面的基础代码
class IndexAction extends Action{
public function index(){
}
}
理论知识:
1 在 TP开发中, 要增加一个应用模块, 就在 Action 文件夹里建立一个类, 类的文件命名格
式是模块名称 +Action.class.php 。例如我们这里的应用模块是 Index ,所以定义文件名为
IndexAction.class.php
2 应用模块类的定义要继承框架的 Action 类。要为这个应用模块添加一个操作,则定义一
个以此操作为命名的 function. 例如上面的 index 操作。
通常一个应用模块中, 会有若干操作 (function) 需要有与用户交互的页面, 这就需要用到模
板输出, TP 本身已内置了一套具有 TP 特色的,很强大易扩展但应用非常方便兼简单的模
板引擎。
在应有模块中,如果某个操作是需要页面显示的,只要对应在 Myapp/Tpl/default/ 里建立
一个文件夹,文件夹以应用模块的名称来命名,然后在这个文件夹下,建立一个以这个
function 名称来命名的 html 文件,就可以在这个方法中使用 $this->display() 方法来直接
调用该模板。 (当然也可以调用其它模块下的其它模板或显式指定模板文件位置和名称, 由
于是循序渐进式的学习, 就让我们先忽略吧) 了解这些理论后, 我们先简单实操一下这些知
识。
1 在 Myapp/Tpl/default/ 下建立一个文件夹,根据应用模块的名称,我们将这个文件夹命
名为 Index
2 在 Myapp/Tpl/default/Index/ 下建立一个 html 文件,根据操作名称,我们命名该文件为
index.html
3 打开 Myapp/Lib/Action/IndexAction.class.php 文件,修改代码为
<?php
class IndexAction extends Action{
public function index(){
$value = 'hello,ThinkPHP';
$this->assign('name',$value);
$this->display();
}
}
?>
代码知识要点 ( 摘自手册: ThinkPHP 模板指南,此后的知识要点均来自 TP 官方手册,不再
申明 )
在 Action 类里面使用 assign 方法对模板变量赋值,无论何种变量类型都统一使用 assign
赋值。
$this->assign('name',$value);
// 下面的写法是等效的
$this->name = $value ;
// 模板变量赋值后就需要调用模板文件来输出相关的变量,模板调用通过 display 方法来
实现
$this->display();
4 打开 Myapp/Tpl/default/Index/index.html 文件 , 代码为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>{$name}</title>
</head>
<body>
测试输出: {$name}
</body>
</html>
代码知识要点:
模板变量使用 {$ 变量名称 } 这种标签进行输出。
不同的模板变量类型,使用不同的标签,标签可以自行另外定义,暂且不理会。
5 打开浏览器输入地址 : http://127.0.0.1/ ,我们可以看到, 定义的模板变量已经输出来了。
附加补充知识:
1 如果要同时输出多个模板变量,可以使用下面的方式:
$array = array();
$array['name'] = 'thinkphp';
$array['email'] = '[email protected]';
$array['phone'] = '12335678';
剩余33页未读,继续阅读
资源评论
zhaomu321
- 粉丝: 0
- 资源: 3万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功