Техническое задание: Портирование библиотеки шаблонизатора C++ для PHP
Цель проекта
Адаптировать существующую библиотеку шаблонизатора (Templates engine for PHP), написанную на C++ как расширение для PHP, для корректной работы в средах PHP 7.4 и PHP 8.3. Исходный код рассчитан на устаревшую версию PHP 5.4.45.
Исходные данные
- Исходный код библиотеки (можно найти по ключевой фразе "Templates engine for PHP mcrbids").
- Примеры использования.
Требования к результату
- Библиотека должна успешно компилироваться без ошибок в указанных ниже условиях сборки.
- Скомпилированное расширение должно стабильно работать с PHP 7.4 и PHP 8.3.
- Решение должно быть готово к использованию без необходимости дополнительных нестандартных настроек или "танцев с бубном".
Целевые среды выполнения (требования заказчика)
Операционная система:
Версии PHP и инструментов:
- Среда 1: PHP 7.3.25 (Zend Engine v3.3.25)
- Среда 2: PHP 8.3.12 (Zend Engine v4.3.12)
- Компилятор: gcc версия 4.8.2
- Система сборки: GNU Make 3.81
Ключевые задачи для исполнителя
- Проанализировать исходный код C++ расширения для PHP 5.4.
- Выявить и исправить API-несовместимости между Zend Engine 2 (PHP 5.4), Zend Engine 3 (PHP 7.4) и Zend Engine 4 (PHP 8.3).
- Адаптировать код под изменения в работе с памятью (zval, строки), обработке ошибок и новых стандартах C++.
- Обеспечить корректную сборку (компиляцию и линковку) в обеих целевых средах с использованием предоставленных версий gcc и make.
- Протестировать работоспособность скомпилированного расширения на предоставленных версиях PHP.
Ожидаемый результат
Готовый к использованию исходный код расширения и инструкция по сборке, позволяющие получить рабочее расширение .so для CentOS 6.10 с PHP 7.4 и PHP 8.3.