Composer - класс автозагрузки для конкретной версии PHP

Мы фактически переносим наш PHP-проект с PHP 5.3 на 7.2.

Я недавно перенес много библиотек в Composer.

У меня проблема с заменой PHPExcel с PhpSpreadSheet который не поддерживает PHP 5.3.

я держу 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?

1 ответ

Есть ли решение, чтобы 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 году - он примерно на 7 лет старше, чем PHP 7.2, и многое изменилось за это время.

Другие вопросы по тегам