【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目录中,还提供了一些文件,这些文件将在后面逐步讲到;


相关文章
|
18天前
|
中间件 Linux PHP
【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框架安装教程
|
18天前
|
PHP
【ThinkPHP框架教程·Part-06】基础、空、多级控制器
本文介绍了ThinkPHP框架中三种控制器的使用方法:基础控制器、空控制器和多级控制器。基础控制器提供了验证功能并注入了`think\App`和`think\Request`对象,推荐继承以获得更多方法。空控制器用于单应用模式下的错误提醒,定义一个Error类即可实现。多级控制器则通过在controller目录下创建子目录来实现分组管理,例如建立group目录并在其中创建Blog.php控制器,访问路径为`http://localhost:8000/group.blog`及其方法。
|
8月前
|
开发框架 前端开发 搜索推荐
分享97个框架模板PHP源码,总有一款适合你
分享97个框架模板PHP源码,总有一款适合你
133 2
|
XML 开发框架 JavaScript
【web 开发基础】php 开发基础快速入门 (3)-PHP程序符号标记和程序注释的使用及空白符详解
以<?php开始和以 ?>结束的标记是标准风格的标记,属于xml风格,这也是PHP推荐使用的标记形式,服务器管理员不能禁用这种风格的标记,如果将PHP嵌入到XML或者XHTML中,则需要使用<?php?>以保证符合标准,如果没有特殊要求,在开发过程中一般默认使用此风格. 以<script language="php">开始和以</script>结束是长风格标记,这种标记是最长的,这种用法就是javascript和vbscript等脚本语言的写法,如果你使用的html编辑器无法使用其他风格的标记可以使用这个标记来界定PHP代码,不过这在日常开发中是比较少用的. 以<?开始和以?>结束的标记是最简
260 1
|
JavaScript 知识图谱
修改第三方插件或库的源码经验技巧总结
修改第三方插件或库的源码经验技巧总结
修改第三方插件或库的源码经验技巧总结
|
Python 应用服务中间件 nginx
初学Python——软件目录结构规范
为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。 可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。
4257 0
|
PHP
php一份代码分层规范
复杂的逻辑,有进度的 ,比如功能的审批、比如订单的创建这种影响比较大的链条式请求
228 0
|
PHP
【laravel】第一节 访问流程
【laravel】第一节 访问流程
226 0
【laravel】第一节 访问流程
|
Java JavaScript C++
typecho插件编写教程1 - 从HelloWorld说起
typecho插件编写教程1 - 从HelloWorld说起 老高 187 5月25日 发布 推荐 0 推荐 收藏 2 收藏,189 浏览 最近老高正在编写一个关于typecho的插件,由于typecho不像wordpres...
1389 0
typecho插件编写教程1 - 从HelloWorld说起