ThinkPHP使用介绍(图文教程)

ThinkPHP使用介绍(图文教程)

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文件内容

{{$rs['webtitle']|default=''}}

<{if $rs['qq'] =='123456' }>

=123456

<{elseif $rs['qq'] =='313801120' }>

=313801120

<{else}>

其它

<{/if}>

    <{foreach $userList as $user}>

  • 昵称: {{$user['name']}} - 年龄: {{$user['age']}}
  • <{/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 设备

}

相关推荐

兔子用什么呼吸,为什么它的呼吸方式如此独特?
饥荒ds rog sw ham都是啥?游戏常用语一次搞明白!
介质的意思
365投注入口

介质的意思

⌛ 07-02 👁️ 189
梦幻西游龙宫最多能秒几?秒怪情况、对比及实战效果全解析!-龙宫 秒几
行尸走肉一共几季  ( 行尸走肉,一到六部都是什么剧情,最好详细一点。 )
松延动力新推仿生机器人“小诺”,32自由度表情逼真引关注