首页 > 解决方案 > 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 下不自动加载?

标签: phpcomposer-phpautoloadphpspreadsheetmigrating

解决方案


有没有办法告诉 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 年,此时许多事情都发生了变化。


推荐阅读