首页 > 编程语言 >ThinkPHP

ThinkPHP

时间:2024-05-18 20:08:55浏览次数:20  
标签:index 控制器 配置文件 模块 ThinkPHP php 目录

ThinkPHP

ThinkPHP本地搭建

安装composer

注意:开启php.ini的 opsenssl,将extension=openssl前面的 去掉

安装到 php7.3.4nts\php.exe

安装thinkphp

路径 D:\phpstudy_pro\WWW\think

安装ThinkPHP稳定版本

composer create-project topthink/think=版本号 名

访问

image-20240511153925587

ThinkPHP框架

框架:框架就是一些代码类、方法(函数)、变量、常量的集合,这些代码是功能结构性的代码(并非业务代码)。业务代码其实就是具体的一些模块的增删改查逻辑代码

目录结构
 1.project  应用部署目录
 2.├─application           应用目录(可设置)
 3.│  ├─common             公共模块目录(可更改)
 4.│  ├─index              模块目录(可更改)
 5.│  │  ├─config.php      模块配置文件
 6.│  │  ├─common.php      模块函数文件
 7.│  │  ├─controller      控制器目录
 8.│  │  ├─model           模型目录
 9.│  │  ├─view            视图目录
10.│  │  └─ ...            更多类库目录
11.│  ├─command.php        命令行工具配置文件
12.│  ├─common.php         应用公共(函数)文件
13.│  ├─config.php         应用(公共)配置文件
14.│  ├─database.php       数据库配置文件
15.│  ├─tags.php           应用行为扩展定义文件
16.│  └─route.php          路由配置文件
17.├─extend                扩展类库目录(可定义)
18.├─public                WEB 部署目录(对外访问目录)
19.│  ├─static             静态资源存放目录(css,js,image)
20.│  ├─index.php          应用入口文件
21.│  ├─router.php         快速测试文件
22.│  └─.htaccess          用于 apache 的重写
23.├─runtime               应用的运行时目录(可写,可设置)
24.├─vendor                第三方类库目录(Composer)
25.├─thinkphp              框架系统目录
26.│  ├─lang               语言包目录
27.│  ├─library            框架核心类库目录
28.│  │  ├─think           Think 类库包目录
29.│  │  └─traits          系统 Traits 目录
30.│  ├─tpl                系统模板目录
31.│  ├─.htaccess          用于 apache 的重写
32.│  ├─.travis.yml        CI 定义文件
33.│  ├─base.php           基础定义文件
34.│  ├─composer.json      composer 定义文件
35.│  ├─console.php        控制台入口文件
36.│  ├─convention.php     惯例配置文件
37.│  ├─helper.php         助手函数文件(可选)
38.│  ├─LICENSE.txt        授权说明文件
39.│  ├─phpunit.xml        单元测试配置文件
40.│  ├─README.md          README 文件
41.│  └─start.php          框架引导文件
42.├─build.php             自动生成定义文件(参考)
43.├─composer.json         composer 定义文件
44.├─LICENSE.txt           授权说明文件
45.├─README.md             README 文件
46.├─think                 命令行入口文件
配置文件

​ 三个层级的配置文件:

  1. 框架主配置文件(惯例配置文件) thinkphp/convention.php

  2. 应用公共配置文件 application/config.php, application/database.php 对整个应用生效

  3. 模块配置文件 application/模块目录/config.php 对当前模块生效

    其他说明:

  4. 配置文件格式 return array( 键值对 );

  5. 加载顺序: 框架主配置文件 》 应用公共配置文件 》 模块配置文件

  6. 配置文件生效顺序: 后加载的生效(后加载的配置项会覆盖之前配置项)

如果要手动进行配置,一般不要修改框架本身的主配置文件,

而是在应用或者模块配置文件中进行配置

函数文件
  • 框架助手函数文件 thinkphp/helper.php
  • 应用公共函数文件 application/common.php
  • 模块函数文件 application/模块目录/common.php
  • 一般不建议直接修改thinkphp/helper.php

ThinkPHP形式

url形式

http://servername/index.php/模块/控制器/方法操作/键值对
	   	 域名 		首页	
http://localhost/idnex.php/index/Index/index

模块命名空间以app为根命名空间(可通过环境变量更改)

模块

模块:在application目录下默认有一个index目录,index就是一个模块

控制器

在index目录瞎下有一个controller控制器目录的Index.php控制器(控制器在url中不区分大小写)kzq名字不可改

操作方法

操作方法:index和hello 两个方法

模块下的类库文件命名空就按统一为:app\模块名,如

Copyapp\index\controller\Index
index操作

image-20240511154029992

hello操作

image-20240510213328393

image-20240510213418716

hello操作带键值对

image-20240511154054788

url重写

(wamp环境开启了伪静态)

image-20240510220127400

一个完全不重复的例子

  • 创建新模块test
  • 创建必须的controller
  • 创建任意命名的控制器,如Abc
  • 命名空间:namespace app\test\controller;
  • 添加参数

image-20240511154350433

image-20240510215416120

image-20240510215338991

image-20240510215327341

任意参数

image-20240511154528086

url模式

如果没有开启 伪静态

可以采取传参模式 如

http://127.0.0.1/index.php?s=test/abc/eat/who/隔壁小孩

模块设计

绑定模块

只有一个模块时,可以绑定这个模块 省略写法

image-20240511151516465

image-20240511154752615

image-20240511154811371

只有一个模块一个控制器时

image-20240511154842420

image-20240511154850650

空模块

在config.php里进行修改

旨在多模块且没有绑定模块的情况下生效

单一模块

image-20240511155058129

image-20240511155331900

image-20240511155316834

url地址:public/控制器/操作,命名空间:app/controller

环境变量

image-20240511155657201

ctrl+左键 进入

image-20240511155725475

添加参数

image-20240511155848125

控制器定义

控制器:controller

image-20240511160500174

image-20240511160514429

显示为什么错误

image-20240511160605139

image-20240511160524801

访问hello_world

还可以 将url改为false

image-20240511160827605

image-20240511160914255

建议用下划线

更改根命名空间

根目录下建一个普通文件.env

写键值对来定义命名空间

image-20240511161428690

image-20240511161415666

image-20240511161404356

渲染输出

1.ThinkPHP 直接采用方法内 return 返回的方式直接就输出了;

2.用 json 输出,直接采用 json 函数:

$data= array('a'=>1,'b'=>2,'c'=>3);

return jso($data);

3.使用 view 输出模版,开启错误提示,可知道如何创建模版;

return view();

4.默认输出方式为 htm1 格式输出,如果返回的是数组,则会报错:

5.可以更改配置文件里的默认输出类型,更改为ison;

return[ 'user'=>'Lee','age'=>100];

'default_return_type'	=>'json',

image-20240511162144443

数组

image-20240511173826790

image-20240511173815845

image-20240511174138373

image-20240511174130797

创建

image-20240511174312276

image-20240511174319420

控制器

image-20240512210202393

$initialize()

继承了父类控制器 ,可以定义控制器初始化方法

继承:extends Controller

image-20240511175442476

image-20240511175433010

只要运行 这一个类的某些方法 这个初始化是必然会触发的

控制器操作

初始化

$beforeActionList 实现

image-20240511181926381

image-20240511180153649

image-20240511180203679

继承controllerle 类之后可以设置一个$beforeActionList属性来创建前置方法

image-20240511181606273

image-20240511181622088

index,two可以,one不可以

image-20240511182641264

image-20240511182738835

只有one,two能调用third,index不可以

image-20240511182916566

image-20240511182818438

image-20240511182930995

image-20240511182946689

跳转和重定向

image-20240511193020525

image-20240511194409534

image-20240511194025439

$flag=true;

image-20240511194151949

空方法和空控制器

空方法

image-20240511195002071

image-20240511194952162

空控制器

默认空控制器名称被设置为Error

image-20240511195132099

image-20240511195523495

image-20240512210821485

image-20240512210954205

request请求

image-20240511195641009

数据库与模型

数据库连接

image-20240511201118383

得到数据的对象集合

image-20240511203406431

列出数据(table需要写上完整的表名,name不需要 因为在database.php中已经设置过‘tp_')

image-20240511204643942

数据表

创建表

image-20240512215542270

连接数据表

image-20240512215619843

image-20240512220013985

模型定义?

创建model,与数据库表名一致的User为名字

image-20240511205915824

image-20240511212619275

image-20240511213506466

image-20240511213542326

查询数据

table方法

image-20240512220330664

image-20240513195916426

image-20240511212936526

image-20240511215700492

查询一条数据(链式查询)

image-20240511213702609

适用于查询当时返回的时什么sql

image-20240511214031754

指定查询

image-20240511214338806

空值 返回null

image-20240511214512789

findOrFail 抛出异常

image-20240511214646445

捕获异常

image-20240511214832504

返回空数组

image-20240511215025583

获取多列数据

image-20240511215142570

抛出异常

image-20240511215533547

设置前缀后 使用name 忽略前缀

image-20240511215746030

image-20240511215813989

db小写

image-20240511220022988

指定字段

image-20240511220214832

image-20240511220314570

指定列的值

image-20240511220431142

id索引

image-20240511220517719

链式查询

查询方法

返回数据库连接对象

image-20240512144537463

image-20240512145211983

image-20240512145643378

image-20240512145835864

image-20240512150745945

增删改查

image-20240512153539735

image-20240512153557367

单条新增

image-20240512153216610

image-20240512153235600

影响行数为1 则输出为1image-20240512153457628

image-20240512153800884

image-20240513212834961

在strict模式下 如果有拼写错误 如 details错写为deta 则details的新增数据不会被新增

image-20240513213512610

image-20240513213915897

replace into会覆盖新增

image-20240513214022779

新增时返回当前id

image-20240512154313433

批量生成数据

image-20240512155125225

修改更新

更新

image-20240512162710169

image-20240512162904942

image-20240512164300781

image-20240512161907833

image-20240512163047550

image-20240512164207314

自增长

image-20240513214407880

删除

image-20240513214831689

image-20240512164514051

查询

image-20240512165550381

image-20240512170258794

image-20240512170832978

image-20240512165601965

时间查询

image-20240512170931978

image-20240512171224421

image-20240512171414230

image-20240512171440265

image-20240512171457580

链式查询

image-20240513201030199

表前缀之扩展查询

当修改表名user为tp_user后

在.env文件中添加DB_PREFIX = tp_

同上 name可拼接前缀,table不可以

image-20240513204613679

扩展查询

image-20240513204733521

image-20240513205858490

将id作为索引

image-20240513210027889

image-20240513210918271

两条一处理;

游标查询

ctrl点进去

image-20240513211412368

image-20240513211445671

image-20240513211617185

条件判断类

image-20240513220057078

like模糊查询

image-20240513220359284

image-20240513220508853

一样的效果

IN区间查询

image-20240513220856264

NULL

image-20240513221036522

not null

image-20240513221147207

EXP查询,自定义SQL片段

image-20240513221414896

原生查询

image-20240513222428353

image-20240513222505336

image-20240513222529533

索引关联

where方法的数组查询

image-20240514210952801

image-20240514211636006

拼装高级查询

拼装查询

image-20240514212156862

image-20240514214749573

image-20240514215258913

image-20240514221006324

image-20240514221245957

路由

image-20240516172415570

配置路由

在index控制器里创建带参数的方法

image-20240516174028763

通常方法

一个参数

可以传数字也可以传字符串

image-20240516172951935

配置之后

之后是参数

方法名加参数(其中details可随意更换,但是参数‘:id’不可更换)

image-20240516173706178

image-20240516174130875

此时原来的方法不能执行

image-20240516174216869

两个参数

image-20240516175135853

image-20240516175154597

可选参数

添加默认值

image-20240516191151816

设置可选

image-20240516191223680

传一个参数和两个参数的区别

image-20240516191243369

image-20240516191255265

image-20240516191506716

正则规则 完全匹配

image-20240516191637470

强制路由

开启强制路由 (因为都没配置路由 所有都访问不了image-20240516192329058)

路由闭包

什么是闭包

闭包是一种特殊的函数,可以不需要执行控制器的操作方法

(它可以在内部访问外部函数作用域中的变量,即使在外部函数执行结束后,这些变量仍然可以被访问)

不带参数

image-20240516193756924

带参数

等于 think?version=8

image-20240516194050642

变量规则

image-20240516194148435

匹配第一个参数

image-20240516194538192

image-20240516194558453

设置其他参数,可选择单独设置也可以选择全局设置

image-20240516194855740

image-20240516194910004

image-20240516194930748

- 可替换 /

image-20240516195133872

组合变量

image-20240516195253703

image-20240516195734454

域名

image-20240516200234598

image-20240516200527757

image-20240516200716564

miss

在Error.php里设置

image-20240516201632935

image-20240516201700878

路由分组

image-20240516203916831

image-20240516204311878

创建资源控制器
php think make:controller Blog

image-20240516210810675

image-20240516210532532

image-20240516210657573

image-20240516210835340

image-20240516210908398

image-20240516212001324

重置

方式,路径,方法名称

image-20240516212219821

路由

可以通过第一路由访问到控制类

标签:index,控制器,配置文件,模块,ThinkPHP,php,目录
From: https://www.cnblogs.com/Yolololo/p/18199706

相关文章

  • thinkphp 时间戳操作
    首先通过composer安装composerrequiretopthink/think-helper=1.0.*在文件头部引入usethink\helper\Time;比如需要获得今天的零点时间戳和23点59分59秒的时间戳list($start,$end)=Time::today();echo$start;//零点时间戳echo$end;//23点59分59秒的时......
  • laravel,webman,hyperf,thinkphp推荐哪一个?
    2024年5月11日14:11:45laravelwebmanhyperfthinkphp流行程度国内流行,欧洲特别是法国,美国,日本很多使用主要在国内流行,少量国外使用主要国内流行,少量国外使用国内流行,国外俄罗斯有使用性能fpm多进程模式,性能一般,偏差同步阻塞多进程模式,性能很好web第一梯队协......
  • thinkphp模型hasOne、hasMany、belongsTo详解
    在ThinkPHP框架中,hasOne、hasMany和belongsTo是用于定义模型间一对多(1:n)、一对一(1:1)和多对一(n:1)关联关系的方法。以下是一些简单的示例来解释这些关系:1.hasOne(一对一关系)假设我们有Author和Profile两个模型,一个作者(Author)有一个个人资料(Profile)://Author模型namespacea......
  • ThinkPHP6 多模型关联查询操作记录
    新入职后组长安排了一个小的管理项目来检验能力,后发现自身对于ThinkPHP框架中的模型关联属于一窍不通,故被终止项目叫楼主去恶补ThinkPHP6框架知识。对于多联表查询之前本人一直使用join方法,但是此方法对于代码效率和维护都有较大影响,故在此尝试使用ThinkPHP框架内置的模型......
  • thinkphp6.0
    <?phpnamespaceapp\controller;useapp\BaseController;usethink\facade\Db;classIndexextendsBaseController{publicfunctionindex13(){#$query=Db::query("select*frombetty13");#print_r($query);#$execu......
  • ThinkPHP-数据库操作---查
    //find单条数据查询//查询单条数据Db::name('user')->where('id',1)->find();//查询单条数据如果没有数据抛出errorDb::name('user')->where('id',1)->findOrFail();//查询单挑数据查询单条数据如果没有数据返回一个空数组Db::name('user')->whe......
  • Thinkphp5.x全漏洞复现分析
    基础知识命名空间和子命名空间我们可以把namespace理解为一个单独的空间,事实上它也就是一个空间而已,子命名空间那就是空间里再划分几个小空间,举个例子:<?phpnamespaceanimal\cat;classcat{publicfunction__construct(){echo"meow"."\n";}}namespacean......
  • ThinkPHP使用Redis
    前置环境安装Redis新建一个ThinkPHP6项目ThinkPHP使用Redis安装Redis扩展#在项目目录下执行如下代码,安装redis依赖composerrequiretopthink/think-redisconfig/database.php'redis'=>[//默认数据连接标识'default'=>['host'=>e......
  • thinkphp 页面寻址
    http://laremehpe.test.org/index.php/index/user/indexhttp://laremehpe.test.org:  url地址      /index.php:  public目录下的入口文件         /index:    application目录下的文件夹名字如果没有文件夹则忽略        /user: ......
  • thinkphp+vue跨域报错解决方案
     使用vue的axios.post向后台服务器的发送数据时报错:CORSpolicy:Responsetopreflightrequestdoesn'tpassaccesscontrolcheck:No'Access-Control-Allow-Origin'headerispresentontherequestedresource. 解决办法在public/index.php文件中添加以下代码://......