【ThinkPHP框架教程·Part-02】开发规范和目录结构

devtools/2024/10/18 7:57:04/

文章目录

  • 一、开发规范
    • 1、目录和文件的规范
    • 2、函数和类、属性命名规范
    • 3、常量与配置的规范
    • 4、数据表和字段的规范
  • 二、目录结构
    • 1、单应用模式目录结构图(默认)
    • 2、多应用模式目录结构图(自定义)
    • 3、仅允许public目录对外访问
    • 4、其他重要文件


本章节我们来学习一下 ThinkPHP6.0 的编码开发规范以及框架的目录结构。

一、开发规范

ThinkPHP6.0 遵循的是 PSR-2 的命名规范和 PSR-4 的自动加载;

1、目录和文件的规范

  • 目录名(小写+下划线);
  • 类库和函数文件统一以.php 为后缀;
  • 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径

一致;

  • 类(包含接口和 Trait)文件采用驼峰式命名(首字母大写),其它采用

小写+下划线命名;

  • 类名(包括接口和 Trait)和文件名保持一致,统一采用驼峰式命名

(首字母大写);

2、函数和类、属性命名规范

  • 类的命名采用驼峰法(首字母大写),如:User、UserType;
  • 函数的命名使用小写字母和下划线(小写字母开头)的方式,

如:get_client_ip;

  • 方法的命名使用驼峰法(首字母小写),如:getUserName;
  • 属性的命名使用驼峰法(首字母小写),如:tableName;
  • 特例:以双下划线__打头的函数或方法作为魔术方法,如: __call 和 __autoload;

3、常量与配置的规范

  • 常量以大写字母和下划线命名,如:APP_PATH;
  • 配置参数以小写字母和下划线命名,如:url_convert;
  • 环境变量定义使用大写字母和下划线命名,如:APP_DEBUG;

4、数据表和字段的规范

  • 数据表和字段采用小写加下划线方式命名;
  • 并注意字段名不要以下划线开头,如: think_user 表和 user_name
  • 字段不建议使用驼峰和中文作为数据表及字段命名;

二、目录结构

ThinkPHP6.0 支持多应用模式部署,app 是应用目录;

1、单应用模式目录结构图(默认)

image.png


单应用完整结构:

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                 命令行入口文件


2、多应用模式目录结构图(自定义)

image.png
上图中,app_name 可以有多个,即多应用模式;

多应用完整结构:

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─app_name           应用目录
│  │  ├─common.php      函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│  │
│  ├─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           视图配置
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                Composer类库目录
├─.example.env          环境变量示例文件
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件


3、仅允许public目录对外访问

在目录结构上,只确保对外可访问的仅public目录;其他配置文件不应该允许用户访问。
image.png

在这里需要分清一个问题,就是启动的web服务有两种情况:Apache服务和ThinkPHP启动自带的服务。

ThinkPHP启动自带的web服务默认通过8000端口访问。
image.png

image.png

phpstudy的Apache服务可默认通过80端口直接访问到WWW目录下的文件。
image.png


4、其他重要文件

在app目录中,还提供了一些文件,这些文件将在后面逐步讲到;
image.png



http://www.ppmy.cn/devtools/7046.html

相关文章

ChatGPT实用指南2024

随着ChatGPT技术的演进,越来越多的人开始在工作中利用此工具。以下是关于ChatGPT的实用指南,适合不太熟悉此技术的朋友参考。 一、ChatGPT概述 1. ChatGPT是什么? ChatGPT是基于OpenAI开发的GPT大型语言模型的智能对话工具。它能够通过自然语…

DBeaver(其他可视化工具一样的逻辑)连接IoTDBDriver教程

DBeaver(其他可视化工具一样的逻辑)连接IoTDBDriver教程 一 下载安装 官网下载链接: https://iotdb.apache.org/Download/二 安装 DBeaver 三 连接 点确定 选择IoTDB驱动 点击下一步 点击测试链接 点击确定 注意: 需要自己写查询语句才能看见…

Golang | Leetcode Golang题解之第36题有效的数独

题目: 题解: func isValidSudoku(board [][]byte) bool {var rows, columns [9][9]intvar subboxes [3][3][9]intfor i, row : range board {for j, c : range row {if c . {continue}index : c - 1rows[i][index]columns[j][index]subboxes[i/3][j/3]…

消息转化器(解决由于后端给前端响应的格式中不能处理Long类型,因为js只会处理前16位,这样会导致后面的精度丢失)

问题描述:由于后端给前端响应的格式中不能处理Long类型,因为js只会处理前16位,这样会导致后面的精度丢失。 解决方法,将后端响应给前端的数据转化位JSON格式,将long类型的序列化一下 下面为具体方法(JAVA对象转化为J…

mac qt android开发环境

1,安装Android Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn)

MapReduce 机理

1.hadoop 平台进程 Namenode进程: 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log)&#xff…

虹科Pico汽车示波器 | 免拆诊断案例 | 2016款保时捷911 GT3 RS车发动机异响

一、故障现象 一辆2016款保时捷911 GT3 RS车,搭载4.0 L水平对置发动机(型号为MA176),累计行驶里程约为4.2万km。车主反映,1星期前上过赛道,现在发动机有“哒哒”异响。 二、故障诊断 接车后试车&#xff…

[网鼎杯 2020 青龙组]AreUSerialz

[网鼎杯 2020 青龙组]AreUSerialz 1.将源代码放到本地php环境中进行调试 <?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {protected $op;protected $filename;protected $content;function __construct() {$op "1";$filena…