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

简介: 本章节介绍ThinkPHP6.0的编码开发规范及目录结构。开发规范遵循PSR-2和PSR-4标准,涵盖命名、文件结构等;目录结构支持单应用和多应用模式,默认仅public目录对外访问,确保安全性。单应用模式下,app目录包含控制器、模型等核心组件;多应用模式允许多个app_name共存,适应复杂项目需求。配置文件与运行时文件分离,确保高效与安全。

本章节我们来学习一下 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、单应用模式目录结构图(默认)

单应用完整结构:

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、多应用模式目录结构图(自定义)

上图中,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目录;其他配置文件不应该允许用户访问。

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

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

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

4、其他重要文件

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


目录
打赏
0
2
2
1
64
分享
相关文章
【ThinkPHP框架教程·Part-01】ThinkPHP6.x框架安装教程
ThinkPHP6.0 是一款免费开源、轻量级且快速的 PHP 框架,适用于 PHP 7.2.5+ 环境。本教程采用稳定版 TP6.0,支持多应用、强类型、PSR 规范等新特性。安装步骤包括:1) 安装 Composer;2) 切换国内镜像加速下载;3) 使用 `composer create-project topthink/think tp6` 安装稳定版;4) 运行 `php think run` 测试。详情及更多内容请参考 [官方手册](https://www.kancloud.cn/manual/thinkphp6_0/1037479)。
【ThinkPHP框架教程·Part-01】ThinkPHP6.x框架安装教程
基于微信小程序的学习资料库小程序的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的学习资料库小程序的设计与实现(源码+lw+部署文档+讲解等)
109 0
2023Node.js零基础教程(小白友好型),nodejs新手到高手,(二)NodeJS入门——buffer模块、计算机基础、fs模块、path模块
2023Node.js零基础教程(小白友好型),nodejs新手到高手,(二)NodeJS入门——buffer模块、计算机基础、fs模块、path模块
129 0
php开发实战分析(5):文件和目录的操作
php开发实战分析(5):文件和目录的操作
147 0
webpack配置篇(三十一):功能模块设计和目录结构
webpack配置篇(三十一):功能模块设计和目录结构
144 0
webpack配置篇(三十一):功能模块设计和目录结构
为了偷懒,我用google/zx一键自动打包编译了前后端项目并发布到指定环境
由于正在负责的一个项目,就说前端涉及到PC端、公众号端、APP端的H5、小程序端、可视化大屏端,而PC和APP又通过qiankun引入了微前端的理念。整体一圈下来可能光前端编译打包就要build差不多二十次。而有时候经常性的bug改动,这个时候便只需要进行测试后需要进行小范围的测试。
237 0
爆肝总结万字长文笔记webpack5打包资源优化
webpack是如何打包资源优化,你有了解吗?或者一个经常被问的面试题,首屏加载如何优化,其实无非就是从http请求、文件资源、图片加载、路由懒加载、预请求,缓存这些方向来优化,通常在使用脚手架中,成熟的脚手架已经给你做了最大的优化,比如压缩资源,代码的tree shaking等。
686 0
爆肝总结万字长文笔记webpack5打包资源优化
[适合初中级Java程序员修炼手册从0搭建整个Web项目](三)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
116 0
[适合初中级Java程序员修炼手册从0搭建整个Web项目](五)(下)
前言 “ 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206 种一棵树最好的时间是十年前,其次是现在
92 0
[适合初中级Java程序员修炼手册从0搭建整个Web项目](五)(上)
前言 “ 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206 种一棵树最好的时间是十年前,其次是现在
98 0