ThinkPHP8学习篇(一):安装与配置

ThinkPHP有非常多的功能库,我的学习策略很明确:不贪多求全,只掌握最核心的20%功能,解决80%的业务需求。所有学习都围绕一个目标:够用就行。遇到复杂问题时,再具体学习对应的内容。

作为ThinkPHP学习的第一篇文章,本篇文章将记录ThinkPHP基础内容的学习,包括:安装、目录结构与配置。


一、安装

ThinkPHP 8.x 要求 PHP 的版本要大于等于 8.0.0。

1、安装 Composer

Composer 是 PHP 用来管理依赖(dependency)关系的工具。可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。稍后会使用 Composer 来安装 ThinkPHP。

在 phpStudy 中安装 Composer 是非常简单的,只需要在软件管理中找到它,然后点击安装即可。我这里选择的是可以安装的最新的 2.5.8 版本。

2、安装稳定版 

第一次安装,在命令行下面,切换到WEB根目录下面并执行下面的命令:

composer create-project topthink/think 应用名称

该命令将创建应用根目录,目录名称就是应用名称。

如果之前已经安装过 8.0 版本,那么切换到该应用根目录下面,然后执行下面的命令进行更新:

composer update

在 phpStudy 中,点击 网站->管理->composer,会弹出 composer设置 对话框,它会自动选中当前安装的 composer 版本,然后点击 “确认” 按钮,就会打开命令行界面,且该命令行界面已经切换到WEB根目录下。

在打开的命令行界面中,我们输入安装 ThinkPHP 命令,创建第一个应用,应用命名为:first_tp: 

composer create-project topthink/think first_tp

3、开启调试模式

应用默认是部署模式,在开发阶段,通过修改环境变量APP_DEBUG开启调试模式,上线部署后切换到部署模式。

通过 create-project 安装后在根目录会自带一个.example.env文件(环境变量示例),我们需要将该文件更名为 .env 文件并根据要求进行修改,该示例文件已经开启调试模式。所以我们现在需要做的就是将该文件更名为 .env 文件就可以了。

4、测试运行

现在要做最后一步来是验证能否正常运行。该步操作还是在命令行中执行,具体如下:

cd first_tp # 首先进入 ThinkPHP 应用根目录
php think run # 执行该命令启动 ThinkPHP 应用

执行完成命令后,会在启动消息中看到服务器的访问地址,默认为:http://localhost:8000。访问该地址,如果看到了欢迎页面,那证明安装成功了。

也可以通过 -p 参数来更改默认启动的端口号:

php think run -p 端口号

注意:在实际部署中,需要绑定域名访问到 ThinkPHP 应用根目录下的 public 目录。

在 ThinkPHP 官网文档中,提供了关于 ThinkPHP 的开发规范,关于开发规范的内容在本文中就不做记录了,可以通过官网 开发规划 进行查看。

二、目录结构

ThinkPHP 8.0 版本开始支持多应用模式部署,所以实际的目录结构取决于采用的是单应用还是多应用模式,默认安装后的目录结构就是一个单应用模式。本文将记录单应用模式。下面我们一起来看下单应用模式的目录结构。

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─controller      控制器目录
│  ├─model           模型目录
│  ├─ ...            更多类库目录
│  │
│  ├─common.php         公共函数文件
│  └─event.php          事件定义文件
│
├─config                配置目录
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─console.php        控制台配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─filesystem.php     文件磁盘配置
│  ├─lang.php           多语言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中间件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  └─view.php           视图配置
│
├─view            视图目录
├─route                 路由定义目录
│  ├─route.php          路由定义文件
│  └─ ...   
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                Composer类库目录
├─.example.env          环境变量示例文件
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

默认安装后,app目录下会包含下面的文件。

├─app           应用目录
│  │
│  ├─BaseController.php    默认基础控制器类
│  ├─ExceptionHandle.php   应用异常定义文件
│  ├─common.php            全局公共函数文件
│  ├─middleware.php        全局中间件定义文件
│  ├─provider.php          服务提供定义文件
│  ├─Request.php           应用请求对象
│  └─event.php             全局事件定义文件

 BaseController.php、Request.php 和 ExceptionHandle.php 三个文件是系统默认提供的基础文件,位置可以随意移动,但注意要同步调整类的命名空间。如果不需要使用 Request.php 和 ExceptionHandle.php文件,或者要调整类名,记得必须同步调整 provider.php 文件中的容器对象绑定。

provider.php 服务提供定义文件只能全局定义,不支持在应用下单独定义。

三、配置 

对于单应用模式来说,配置文件和目录很简单,根目录下的 config 目录下面就是所有的配置文件。每个配置文件对应不同的组件,当然也可以增加自定义的配置文件。

├─config(配置目录)
│  ├─app.php            应用配置
│  ├─cache.php          缓存配置
│  ├─console.php        控制台配置
│  ├─cookie.php         Cookie配置
│  ├─database.php       数据库配置
│  ├─filesystem.php     文件磁盘配置
│  ├─lang.php           多语言配置
│  ├─log.php            日志配置
│  ├─middleware.php     中间件配置
│  ├─route.php          URL和路由配置
│  ├─session.php        Session配置
│  ├─trace.php          Trace配置
│  ├─view.php           视图配置
│  └─ ...               更多配置文件
│  

单应用模式的 config 目录下的所有配置文件系统都会自动读取,不需要手动加载。如果存在子目录,需要通过 Config 类的 load 方法手动加载,例如:

// 加载config/extra/config.php 配置文件 读取到extra
\think\facade\Config::load('extra/config', 'extra');

可以直接在相应的全局或应用配置文件中修改或者增加配置参数,如果要增加额外的配置文件,直接放入配置目录即可(文件名小写)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917462.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python练习】075. 编写一个函数,实现简单的语音识别功能

075. 编写一个函数,实现简单的语音识别功能 075. 编写一个函数,实现简单的语音识别功能 安装依赖库 示例代码 代码说明 示例输出 注意事项 使用 PocketSphinx 进行离线语音识别 注意事项 实现方法 使用SpeechRecognition库实现语音识别 使用PyAudio和深度学习模型 使用Vosk离…

chrome的数据采集插件chat4data的使用

简介: Chat4Data是一款Chrome扩展插件,支持AI网页数据采集与分析。用户可通过Chrome应用商店安装后,在网页上选择区块和字段进行数据抓取,设置采集页数后导出结果。该工具适用于结构化数据提取,操作简便,为…

《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:人工肌肉研发进展及一款超生物肌肉Hypermusclet的设计与制造

目录:一、人工股肉的不同种类及工作原理和比较优势二、人工肌肉研发的重点难点及成果进展和趋势三、人工肌肉主要研发机构及其研发成果四、人工肌肉主要性能检测表征能力及标准体系建设五、人工肌肉主要制造商及其产品性能优势和供应能力六、人工肌肉在机器人市场应…

【人工智能】AI代理的伦理迷局:自主智能体的责任归属之谜

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在人工智能时代,AI代理作为自主决策的代表,正深刻改变着人类社会。然而,其伦理困境日益凸显:当AI代理做出自主决策时,谁应为其后果负责…

C语言数据结构(6)贪吃蛇项目1.贪吃蛇项目介绍

1. 游戏背景 贪吃蛇是久负盛名的游戏,它也和俄罗斯方块,扫雷等游戏位列经典游戏的行列。 在编程语言的教学中,我们以贪吃蛇为例,从设计到代码实现来提升学生的编程能力和逻辑能力。 2. 游戏效果演示 3. 项目目标 使用C语言…

神经网络的并行计算与加速技术

神经网络的并行计算与加速技术一、引言随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度…

工厂方法模式:从基础到C++实现

引言 在软件开发中,设计模式是解决常见问题的经过验证的方案。其中,工厂方法模式是一种创建型设计模式,广泛应用于需要动态创建对象的场景。本文将详细介绍工厂方法模式的核心概念、应用场景,并通过C代码示例展示其具体实现。 核心…

我的世界进阶模组开发教程——伤害(2)

上一篇文章简要的讲述了伤害,这一篇文章就来讲一下机械动力的伤害 机械动力源码 DamageTypeBuilder 类定义与成员变量 public class DamageTypeBuilder {protected final ResourceKey<DamageType> key; // 伤害类型的唯一资源标识符

web前端第一次作业

一、用户注册界面作业要求: 1.用户名为文本框&#xff0c;名称为 UserName&#xff0c;长度为 15&#xff0c;最大字符数为 20 2.密码为密码框&#xff0c;名称为 UserPass&#xff0c;长度为 15&#xff0c;最大字符数为 20 3.性别为两个单选按钮&#xff0c;名称为 sex&#…

Jenkins 节点连接故障定位及解决方案总结 - PKIX path validation failed

一、故障现象 Jenkins 节点通过 Java Web 方式连接时&#xff0c;报错&#xff1a; java.io.IOException: Failed to connect to https://xxxx.zte.com.cn/yyyy/tcpSlaveAgentListener/: PKIX path validation failed: java.security.cert.CertPathValidatorException: validit…

c++ --- priority_queue的使用以及简单实现

C --- priority_queue前言一、priority_queue的使用二、priority_queue的简单实现1.整体结构2.主要方法pushpoptopemptysize三、构造迭代器区间构造默认构造四、仿函数前言 priority_queue是C容器之一&#xff0c;意为优先级队列&#xff0c;虽说叫做队列&#xff0c;但是其底…

MySQL梳理三:查询与优化

MySQL查询优化完整指南&#xff1a;从理论到实践 本文从MySQL查询的基础机制出发&#xff0c;深入探讨单表查询访问方法、联表查询策略、成本计算原理、基于规则的优化技术&#xff0c;最后通过实际案例展示慢SQL的诊断和优化过程。 目录 一、单表查询的访问方法二、联表查询机…

从零开始的python学习(九)P129+P130+P131+P132+P133

本文章记录观看B站python教程学习笔记和实践感悟&#xff0c;视频链接&#xff1a;【花了2万多买的Python教程全套&#xff0c;现在分享给大家&#xff0c;入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

LCL滤波器及其电容电流前馈有源阻尼设计软件【LCLAD_designer】

本文主要介绍针对阮新波著《LCL型并网逆变器的控制技术》书籍 第二章&#xff08;LCL滤波器设计&#xff09;及第五章&#xff08;LCL型并网逆变器的电容电流反馈有源阻尼设计&#xff09;开发的一款交互式软件【LCL&AD_designer】&#xff0c;开发平台MATLAB_R2022b/app d…

【Conda】配置Conda镜像源

Conda 镜像源配置指南 适用系统&#xff1a;Windows 10&#xff08;含 Miniconda / Anaconda&#xff09; & Linux&#xff08;Ubuntu / CentOS / Debian 等&#xff09;1. 为什么要设置镜像源 在中国大陆直接访问 repo.anaconda.com 经常遇到速度慢、连接超时、SSL 错误等…

八股取士--docker

基础概念类 1. 什么是Docker&#xff1f;它解决了什么问题&#xff1f; 解析&#xff1a; Docker是一个开源的容器化平台&#xff0c;用于开发、交付和运行应用程序。 主要解决的问题&#xff1a; 环境一致性&#xff1a;解决"在我机器上能跑"的问题资源利用率&#…

C++:STL中的栈和队列的适配器deque

学习完string类、容器vector和容器list&#xff0c;再去学习其他容器的学习成本就非常低&#xff0c;容器的使用方法都大差不差&#xff0c;而栈和队列的底层使用了适配器&#xff0c;去模拟实现就没有那么麻烦&#xff0c;适配器也是一种容器&#xff0c;但是这种容器兼备栈和…

9类主流数据库 - 帮你更好地进行数据库选型!

作者&#xff1a;唐叔在学习 专栏&#xff1a;数据库学习 标签&#xff1a;数据库选型、MySQL、Redis、MongoDB、大数据存储、NoSQL、数据库优化、数据架构、AI数据库 大家好&#xff0c;我是你们的老朋友唐叔&#xff01;今天咱们来聊聊程序员吃饭的家伙之一 —— 数据库。在这…

推送本地项目到Gitee远程仓库

文章目录前言前面已加学习了下载gitee软件&#xff0c;网址在上一篇文章。在gitee创建账号与仓库。现在来学习如何讲本地项目推送到Gitee远程仓库一、流程总结前言 前面已加学习了下载gitee软件&#xff0c;网址在上一篇文章。在gitee创建账号与仓库。现在来学习如何讲本地项目…

CMake 命令行参数完全指南(5)

​**40. --version**​ ​解释​&#xff1a;显示CMake版本 ​示例​&#xff1a; cmake --version # 输出&#xff1a;cmake version 3.25.2​**41. --warn-uninitialized**​ ​解释​&#xff1a;警告未初始化的变量 ​适用场景​&#xff1a;检测脚本错误 ​示例​&#xf…