Предыстория
Мы переносим кодовую базу наших проектов из PHP 5.3 в PHP 7.0 на платформе CentOS 6.
Старый стек использует Apache с PHP 5.3 модуль libphp + libmysql, а новый стек использует Nginx с PHP 7.0 FPM + mysqlnd.
Мы настроили их на параллельную работу, чтобы легко переключаться на новую версию, когда все готово (благодаря SCL).
Проблемная часть
Приятной особенностью mysqlnd является то, что он может автоматически возвращать нам поля базы данных правильного типа, которые используются в базе данных (VARCHAR как строка, MEDIUMINT как целое число и т. Д.).
Хотя, к сожалению, это работает против нас.
Одной из частей проекта является предоставление службы API для собственных приложений, как Android, так и iOS, для взаимодействия с другими различными службами в нашей системе.
Из-за некоторых неудачных дизайнерских решений в последние годы (вне моего контроля) некоторые целые числа отправляются в мобильные приложения в виде строк из-за того, как libmysql поддерживал это. Поэтому, когда мы переключились на системы PHP, это начало ломать наши мобильные приложения, потому что типы больше не совпадали.
Чтобы избежать каких-либо дальнейших задержек в обновлении, поскольку нашим конечным пользователям могут потребоваться месяцы для обновления своих мобильных приложений, в которых они будут исправлены, мы начали искать способы возврата к старому способу возврата всего в виде строки. из базы данных в mysqlnd.
Пока мой поиск в Google не дал никаких информативных результатов. Я также начал думать, что это конструктивный аспект mysqlnd, и его невозможно достичь.
Итак, наконец, на мой вопрос
Я предполагаю, что есть довольно много людей, которые прошли подобные процессы обновления, поэтому я хотел бы спросить любые рекомендации относительно препятствий, с которыми вы, возможно, столкнулись.
Можно ли «отключить» автоматическое приведение типов к PHP? Существуют ли какие-либо приемлемые обходные пути для сохранения поддержки кодовой базы для мобильных приложений (кроме того, чтобы пройти через кодовую базу API и привести все обратно к строкам)?
Задача ещё не решена.
Других решений пока нет …