bain2018 / framework
基于 ThinkPHP 5.0.26 的 PHP 8.2+ 兼容维护分支
Package info
Type:bain2018-framework
pkg:composer/bain2018/framework
Requires
- php: >=8.2
- ext-json: *
- ext-pdo: *
- ext-redis: *
- bain2018/think-installer: ^3.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
本仓库是 ThinkPHP 5.0.26 的维护分支,目标运行环境为 PHP 8.2+。保留 ThinkPHP 5 的目录结构和公共调用方式,不迁移到其他框架版本。
PHP 8 兼容与验证
- 本地验证 PHP 8.2、8.4、8.5;PHP 8.3 已列入 CI 矩阵,本地未运行。未来 PHP 版本不作未经测试的兼容承诺。
- 修复内置接口返回类型兼容、反射参数绑定、可空参数、Session 驱动及 PHP 8.5 废弃语法。错误报告保持
E_ALL。 - 移除仅供旧测试工具使用的过时开发依赖;改用无第三方依赖的隔离回归套件。原
phpunit.xml引用的测试目录并不存在,现以以下命令为准。
composer install composer validate --strict php tests/lint.php composer test # 也可直接指定 PHP 版本运行,不要求先安装开发依赖 /path/to/php8.2 tests/run.php
测试覆盖全框架类加载、启动/路由/异常响应、核心参数绑定及独立模块回归。测试使用临时目录、本地子进程和隔离数据,不读取业务项目配置、不调用生产数据库或外部缓存服务。语法检查会将编译期弃用提示也视为失败。
兼容边界:
- 内置接口适配在需要保留下游子类方法签名时使用
#[\ReturnTypeWillChange];这不等于关闭全局弃用报告。业务子类仍应显式声明自己的属性,并检查自定义接口覆盖。 - SQLite2、Xcache、Wincache 等历史可选缓存驱动依赖已过时扩展,保留原来的显式“不支持”错误,不自动迁移数据;PHP 8 应使用可用的 File、Redis 等驱动。PDO SQLite 数据库驱动与旧 SQLite2 缓存驱动是不同模块。
- MySQL/PostgreSQL/SQL Server、Redis/Memcache/Memcached 的真实服务、Windows 子进程和业务项目联调需要部署环境单独验收。框架测试通过不代表业务应用或生产发布通过。
- 最低 PHP 版本声明提升至 8.2;低于该版本的应用请保留原框架版本。上线前在业务项目更新依赖并回归,回滚时恢复原框架及依赖版本;本次不涉及数据库迁移。
PHP 官方迁移依据:8.2 动态属性、8.4 隐式可空参数、8.5 废弃项。
原版框架说明
ThinkPHP5在保持快速开发和大道至简的核心理念不变的同时,PHP版本要求提升到5.4,优化核心,减少依赖,基于全新的架构思想和命名空间实现,是ThinkPHP突破原有框架思路的颠覆之作,其主要特性包括:
- 基于命名空间和众多PHP新特性
- 核心功能组件化
- 强化路由功能
- 更灵活的控制器
- 重构的模型和数据库类
- 配置文件可分离
- 重写的自动验证和完成
- 简化扩展机制
- API支持完善
- 改进的Log类
- 命令行访问支持
- REST支持
- 引导文件支持
- 方便的自动生成定义
- 真正惰性加载
- 分布式环境支持
- 支持Composer
- 支持MongoDb
本维护分支要求 PHP 8.2 以上;下文保留原版目录与开发文档说明。
详细开发文档参考 ThinkPHP5完全开发手册 以及ThinkPHP5入门系列教程
目录结构
初始的目录结构如下:
www WEB部署目录(或者子目录)
├─application 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─module_name 模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─database.php 数据库配置文件
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─tests/ PHP 8 兼容回归测试
│ └─start.php 框架入口文件
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
router.php用于php自带webserver支持,可用于快速测试 切换到public目录后,启动命令:php -S localhost:8888 router.php 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。
命名规范
ThinkPHP5的命名规范遵循PSR-2规范以及PSR-4自动加载规范。
参与开发
注册并登录 Github 帐号, fork 本项目并进行改动。
更多细节参阅 CONTRIBUTING.md
版权信息
ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)
All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
更多细节参阅 LICENSE.txt