php - Composer - 在特定 PHP 版本上自动加载类
问题描述
我们实际上正在将我们的 PHP 项目从 PHP 5.3 迁移到 7.2。
我最近将许多库迁移到 Composer。
我有一个不支持 PHP 5.3 的问题要PHPExcel
替换PhpSpreadSheet
。
我暂时保存PHPExcel
在一个单独的文件夹中,我习惯PHP_VERSION_ID
使用其中一个。
// early in the file to use another dependency
require_once 'vendor/autoload.php';
.
.
.
if (PHP_VERSION_ID > 50400) {
$workbook = new PhpOffice\PhpSpreadsheet\Spreadsheet();
} else {
require_once 'lib/PHPExcel/Classes/PHPExcel.php';
$workbook = new PHPExcel();
}
目前,我们的代码必须在 PHP 5.3 和 7.2 下继续运行。
有没有办法告诉 Composer 自动加载器PhpSpreadSheet
在 PHP 5.3 下不自动加载?
解决方案
有没有办法告诉 Composer 自动加载器
PhpSpreadSheet
在 PHP 5.3 下不自动加载?
只要您不请求,Composer 的自动加载器就不会加载任何类。因此,告诉 Composer 不加载指定类的最简单选择是不使用它。:)
然而,从 PHP 5.3 迁移到 7.2 是一项艰巨的任务,试图让您的应用程序与这两个版本兼容可能会非常困难。我建议将其视为在不同分支上开发的两个独立版本,需要不同的 PHP 版本。拥有两行代码应该更容易,其中一行只关心 PHP 5.3,第二行只关心 PHP 7.2,而不是修改一行以兼容 PHP 5.3 和 7.2。PHP 5.3 于 2009 年发布 - 它比 PHP 7.2 早了约 7 年,此时许多事情都发生了变化。
推荐阅读
- sas - SAS 缺失值发现
- reactjs - 动作必须是普通对象。Redux 不工作
- find-occurrences - Linux:递归查找所有没有匹配 .tif 的 .txt 文件
- javascript - 图表始终为空
- opengl - glMultiDrawElementsIndirect 自定义 drawID,每个 DrawElementsIndirectCommand 有多个实例
- c++ - 使用 FFmpeg 库处理 GIF - 在 av_parser_init 中找不到解析器
- swift - 快速创建动态添加按钮
- r - R 中的 Maxent 错误:偏置网格不能与 SWD 格式背景一起使用
- python - 如何使用 discord.py 审查坏词
- qt - QT3D Multiview - 小部件中的单一视图