Мы фактически переносим наш 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?
Есть ли решение, чтобы 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, и многое изменилось за это время.
Других решений пока нет …