ThinkPHP框架:MVC框架
Model:模型
View:视图
Controller:控制器
优点:
1、代码分工更加明确
2、便于网站的维护与管理、便于二次开发
ThinkPHP特点
1、轻量级
2、集成Smarty(显示与逻辑相分离)
3、重写了Smarty标签(ThinkPHP标签)
4、项目目录自动生成
5、国内程序员
ThinkPHP2.x:Smarty2.x、PHP5.0-4
ThinkPHP3.x:Smarty3.x、PHP5.3-4、命名空间
项目目录
library------------------第三方资源包
ThinkPHP
jquery
kindeditor
application--------------应用程序
Common-----------------公用函数库
Conf-------------------当前项目配置文件夹
config.php-----------当前项目配置文件
Lang-------------------语言包
Lib--------------------控制器、模型
Action---------------控制器
Model----------------模型
Runtime----------------运行时文件
Tpl--------------------视图目录
default--------------主题目录
public-------------------公用文件
css
images
index.php----------------入口文件(引导文件)
配置文件
1、当前项目的配置文件
/项目/application/Conf/config.php
2、全局的配置文件
/项目/library/ThinkPHP/Common/convention.php
运行机制:
当程序运行,要读取配置文件中的内容时
先到config.php中寻找指定的配置信息
1、如果config.php有配置信息,不再找convention.php
2、如果config.php没有配置信息,再找convention.php
控制器的命名规则
1、必须采用大驼峰的命名规则
2、必须以Action.class.php结尾
文件名:IndexAction.class.php 类名:IndexAction
文件名:LoginAction.class.php 类名:LoginAction
控制器中方法的命名规则
1、方法名全部小写
控制器定义的语法格式
class XxxAction extends Action
{
public function xxx()
{
逻辑代码;
$this->assign(key,value);
$this->assign(key,value);
$this->assign(key,value);
$this->display();
}
}
视图文件的目录结构
Tpl
default
控制器(文件夹)
xxx.html
控制器
xxx.html
注意:控制器的文件夹名必须注意大小写
与控制器名完全一样
display用法:
1、$this->display();
到当前控制器的文件夹下找当前方法名的.html文件
2、$this->display("xxx");
到当前控制器的文件夹下找xxx.html文件
ThinkPHP标签注意:
1、所有的<>标签,必须都是双标签
2、只有输出值的时候用的是{}定界符,其他的标签都是<>定界符
3、只有输出值、if标签调用键名时用$,其他标签调用键名都不加$
ThinkPHP标签
1、显示某一变量值
{$key}
2、显示数组中的某一个值
{$key.数组的下标}
3、比较标签
lt 小于
gt 大于
elt 小于等于
egt 大于等于
eq 等于
neq 不等于
heq 衡等于
nheq 衡不等于
4、if标签
<if condition="条件">
html内容
<elseif condition="条件"/>
html内容
<else/>
html内容
</if>
5、switch标签
<switch name="key">
<case value="值">html内容</case>
<case value="值">html内容</case>
<case value="值">html内容</case>
<default/>html内容
</switch>
6、foreach标签
<foreach name="key" key="k" item="v">
下标:{$k} 值:{$v}
</foreach>
7、volist标签
<volist name="key" key="k" id="v">
循环变量:{$k} 值:{$v}
</volist>
8、php标签
<php>
php代码;
</php>
9、literal标签
<literal>
ThinkPHP标签
</literal>
10、include标签
网页的头、脚,放到tpl/default/Public
<include file="Public:xxx" />
__ROOT__不起作用的解决办法
在入口文件中定义如下常量
define("__ROOT__","/项目名称");
系统常量
__ROOT__:项目根目录***
__APP__:入口文件地址***
__URL__:当前控制器的地址
__ACTION__:当前方法的地址
__SELF__:当前的url地址
注意:Public下的文件内容一旦变更后,必须删除一下Runtime目录
模型命名规则
1、必须采用大驼峰的命名规则
2、必须以表名来命名
3、必须以Model.class.php来结尾
文件名:UserInfoModel.class.php 类名:UserInfoModel
文件名:ReviewsModel.class.php 类名:ReviewsModel
模型的定义格式
class 表名Model extends Model
{
public $tableName = "省略了前后缀的表名";
public $trueTableName = "完整的表名";
}
注意:M("表名"),表名必须全小写
数据库操作
1、查询多条记录,返回值:二维数组
$model = D("模型名")或$model = M("表名")
$result = $model->select();
$result = $model->where()->select();
$result = $model->order()->select();
$result = $model->limit()->select();
$result = $model->where()->order()->limit()->select()
2、删除记录,返回值:受影响的行数
$model = D("模型名")或$model = M("表名")
$result = $model->delete();
$result = $model->where()->delete();
redirect用法:
1、跳转页面
$this->redirect("控制器/方法");
2、跳转页面,并传参
$this->redirect("控制器/方法/名/值");
$this->redirect("控制器/方法",array(名=>值));
3、跳转页面,并提示信息
$this->redirect("控制器/方法",array(),时间,信息);
注意:
如果Public目录下的文件内容一旦变更后,必须要删除Runtime目录
系统常量
__ROOT__ 项目根目录
__APP__ 当前入口文件地址
__ACTION__ 当前方法的地址
__URL__ 当前控制器的地址
__SELF__ 当前的url地址
ThinkPHP提供一个分页类
library/ThinkPHP/Lib/ORG/Util/Page.class.php
Common:公用函数文件夹
1、Common文件夹下的文件名固定common.php
2、Common文件夹下只能有一个文件
3、common.php由系统自动加载
4、控制器、视图都可以来调用common.php里的函数
5、common.php内容一旦变更后,必须删除Runtime
作用:对页面的输出结果,进行微调、控制器调用公用函数
使用方法
1、控制器调用
通过函数名直接调用
2、视图调用
{$key|函数名}
{$key,$key...|函数名}
注意:函数会将前面的所有的$key当做函数的参数
TinkPHP自带的验证码文件
library/ThinkPHP/Lib/ORG/Util/Image.class.php
session中默认的名称:verify
验证码的使用
1、在当前控制器中添加一个方法
public function 方法名()
{
import("ORG.Util.Image");//包含验证码类
Image::buildImageVerify();//产生验证码
}
2、视图页面的引用
<img src="__APP__/控制器/方法名">
ThinkPHP的表单验证
1、必须新建一个模型文件
2、表单验证是通过模型来实现的
3、模型中的验证规则
public $_validate = array(
array("表单元素名","验证规则","提示信息"),
array("表单元素名","验证规则","提示信息"),
array("表单元素名","验证规则","提示信息"),
);
4、在控制器的方法中添加如下代码
$对象 = D("模型名");
if($对象->create())
{
验证通过
}
else
{
$msg = $对象->getError();//错误提示信息
}
令牌验证:防止远程提交表单
1、config.php有相关的配置信息
2、通过模型执行令牌验证:D()、M()都行
3、通过模型对象执行验证
$对象->autoCheckToken($_POST);
true:验证通过
false:验证失败
ThinkPHP的文件上传
library/ThinkPHP/Lib/ORG/Net/UploadFile.class.php
自学新框架的步骤
1、入口文件
2、目录结构
3、MVC三层的定义格式
4、CURD操作
5、附加功能
特殊说明,本文版权归 ning个人博客 所有带原创标签请勿转载,转载请注明出处.
本文标题: 今天学习了一下ThinkPHP框架,写了一些总结,十分钟入门。
本文网址: http://www.ningguoteng.com/show-51.html
点击下载ThinkPHP: http://pan.baidu.com/s/1pJ3HEYZ