ThinkPHP使用介绍(图文教程)
ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架。
ThinkPHP安装
使用composer安装ThinkPHP5.1
cmd里输入 >> 如果你是第一次安装的话,在命令行下面,切换到你的WEB根目录下面并执行下面的命令: composer create-project topthink/think=5.1.* tp5
ThinkPHP5.1完全开发手册
https://www.kancloud.cn/manual/thinkphp5_1/353946
thinkphp8.0安装
第一步:tp8安装 cmd >> composer create-project topthink/think tp 教程https://doc.thinkphp.cn/v8_0/setup.html
第二步:命令进行更新: composer update topthink/framework
composer create-project topthink/think tp
IIS配置ThinkPHP
物理路径 选择 ThinkPHP的public目录
打开网址,看到的效果,或输入 : http://a1/index.php/index/index/index
带参数 如:http://a1/index.php/index/index/hello?name=xiyueta
web.config文件
MVC开发模式
MVC是一种常用的软件架构模式,它将应用程序分为三个主要部分:模型、视图和控制器。
模型(Model)表示应用程序的数据和业务逻辑。在MVC架构中,模型通常定义了如何访问和操作数据,包括如何验证数据和处理数据之间的关系。
视图(View)表示用户交互界面。在MVC中,视图通常是指HTML、CSS和JavaScript,用于构建Web应用程序的用户界面。
控制器(Controller)负责协调模型和视图之间的通信。控制器处理来自用户的请求,操作数据模型,然后将更改反映到视图中。
ThinkPHP使用
ThinkPHP使用
application >> index >> controller >> index.asp 里添加 test动作
application >> index >> view >> index >> test.html 里添加 内容
输入网址:http://a1/index.php/index/index/test 看到效果
如果使用这种 return $this->fetch('test'); 需要继承
带参数模板引擎 $this->assign('age',18);
return $this->fetch('test',['name'=>'小明']); 需要继承
开启错误提示:app_debug 改为 true
ThinkPHP使用
ThinkPHP数据库操作
http://a1/index.php/index/index/sel
使用数据库表前缀,使用时Db::table('xy_student') 或 Db::name('student')
测试案例代码
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
public function index()
{
$c="单条查询(find)";
$c.="
多条查询(select)";
$c.="
查询某个字段的值(find)";
$c.="
添加数据(insert)";
$c.="
添加多条数据(insertAll)";
$c.="
更新数据(update)";
$c.="
删除数据(delete)";
return $c;
}
//查询单个数据使用find方法:
public function find()
{
// table方法必须指定完整的数据表名
$list=Db::name('student')->where('id',1)->find();
//如果查找不到则返回 null findOrFail(); 为没有找到数据后抛出异常可以使用
return json($list);
}
//查询多个数据(数据集)使用select方法:
public function select()
{
// table方法必须指定完整的数据表名
$list=Db::table('xy_student')->select();
return json($list);
}
//查询某个字段的值
public function findvalue()
{
// 返回某个字段的值
$name=Db::table('xy_student')->where('id',1)->value('name');
return $name;
}
//insert 方法向数据库提交数据
public function insert()
{
$data = ['name' => '小孙', 'sex' => '1', 'classes' => '大学', 'age' => '18'];
$s=Db::name('student')->insert($data);
return $s;
}
//insertAll 添加多条数据
public function insertAll()
{
$data =[
['name' => '小孙', 'sex' => '1', 'classes' => '大学', 'age' => '18'],
['name' => '小孙2', 'sex' => '1', 'classes' => '大学', 'age' => '18']
];
$s=Db::name('student')->insertAll($data);
return $s;
}
//update 更新数据
public function update()
{
$s=Db::name('student')->where('id', 1)->update(['name' => '小明明']);
return $s;
}
//delete 删除数据
public function delete()
{
$s=Db::table('xy_student')->delete(1);
return $s;
}
}
ThinkPHP8.0操作
ThinkPHP8.0操作
设置模板后缀为*.php类型,用原生php引擎
ThinkPHP8 验证码安装
验证码安装和使用:cmd >> composer require topthink/think-captcha
//配置 config >> middleware.php 开启 angPack::class
TP8多应用配置与路由定义,view模板目录
ThinkPHP8.0多应用
TP8多应用配置与路由定义
网站根目录 >> cmd >> composer require topthink/think-multi-app
TP8多应用配置与路由定义,view模板目录
ThinkPHP8.0使用模板引擎
use think\facade\View; 模板引擎
TP8模板引擎
namespace app\controller;
use app\BaseController;
use think\facade\View;
class Index extends BaseController{
public function index(){
// View::assign("name","你好呀");
$arr=array(
"name"=>"小孙",
"age"=>"18",
"qq"=>"313801120"
);
View::assign($arr);
return View::fetch();
}
}
模板里使用if和foreach循环
php控制器文件内容
namespace app\index\controller;
use app\BaseController;
use think\facade\Config;
use think\facade\Env;
use think\facade\Filesystem;
use think\exception\ValidateException;
use think\facade\Validate;
use think\Image;
use think\facade\Db;
use think\facade\View;
class Index extends BaseController
{
public function index()
{
$rs = Db::name('website')->find(1);
$userList = array(
array('name' => '小明', 'age' => '18'),
array('name' => '小张', 'age' => '24'),
array('name' => '小草', 'age' => '20')
);
View::assign(array(
"rs"=>$rs,
"userList"=>$userList,
));
return View::fetch("/index");
}
}
view文件内容
<{if $rs['qq'] =='123456' }>
=123456
<{elseif $rs['qq'] =='313801120' }>
=313801120
<{else}>
其它
<{/if}>
- 昵称: {{$user['name']}} - 年龄: {{$user['age']}}
<{foreach $userList as $user}>
<{/foreach}>
ThinkPHP帮助
ThinkPHP使用技巧与注意
{{$rs['level']|default=''|raw}} 里|raw显示不转义的html内容
$rs = Db::name('website')->find(1); 需要加1,要不然找不到数据
$admin = Db::name('admin')->where('id', $adminid)->find(); 不能加1,要不然也找不到数据,奇怪了
where多个搜索为一组方法:
$whereOr = [
['item', 'LIKE', '%' . $key . '%'],
['adminname', 'LIKE', '%' . $key . '%'],
];
// 第一步:获取SQL语句(不执行查询)
$query = Db::name('systemlog')
->order('id', 'desc')
->where($where)
->where(function($query) use ($whereOr){
$query->whereOr($whereOr);
})
->buildSql(); // 注意:不是所有版本的ThinkPHP都有这个方法
// 打印SQL语句
die($query);
( SELECT * FROM `xy_systemlog` WHERE `createtime` >= '2024-06-22 00:00:00' AND `createtime` <= '2024-06-05 23:59:59' AND ( `item` LIKE '%login%' OR `adminname` LIKE '%login%' ) ORDER BY `id` DESC )
where多个为一组方法:
$ip=request()->ip();
// ,错误登录 2次,达到最大登录 5次则不可登录
$today = date('Y-m-d'); // 获取当前日期,格式为 YYYY-MM-DD
$whereOr = [
['msgstr','=', '密码错误!'],
['msgstr','=', '帐号不存在!'],
];
$ipLoginErrTotal = Db::name('systemlog')
->where('ip', $ip)
->whereRaw("DATE(createtime) = ?", [$today]) // 使用 whereRaw 来构建自定义的 WHERE 条件
->where(function($query) use ($whereOr){
$query->whereOr($whereOr);
})
->count();
// ->buildSql(); // 注意:不是所有版本的ThinkPHP都有这个方法
mobiledetect手机端检测
Mobile Detect是一个基于User-Agent的PHP类库,主要用于识别移动设备信息,包括手机、平板电脑以及其他可穿戴设备等。
验证码安装和使用:cmd >> composer require topthink/think-captcha
使用
require_once 'path/to/Mobile_Detect.php';
$detect = new Mobile_Detect;
if( $detect->isMobile() ){
// 是手机端
}
if( $detect->isTablet()){
// 是平板
}
if( $detect->is('iPhone') || $detect->is('iPad') ){
// 是 iOS 设备
}