Uno de los principales problemas que enfrentan los programadores, es mantener su código al día con los cambios que introduce PHP. Y es que si bien cada nueva version del lenguaje funciona con mayor eficiencia y velocidad, además de que introducen nuevas funcionalidades, también ocurre que van quitando o remplazando antiguas.
Y este problema es muy común en sitios desarrollados hace varios años, ya que al haberse usado funciones que hoy ya no existen en versiones actuales del lenguaje, simplemente no podés actualizar la versión de PHP sin generar problemas.
En el caso de PHP 5.6, uno de los cambios más radicales fue la eliminación de las funciones tradicionales de MySQL, que fueron remplazadas por las ya existentes de mysqli o PDO.
Y en el caso de PHP 7.0, la eliminación de la familia de funciones ereg que permite encontrar textos dentro de una cadena, también es un dolor de cabeza.
Pero deben saber que si ese es el problema, se puede hacer que funcionen fácilmente con PHP 7 si insertamos funciones de remplazo. De este modo devolvemos la funcionalidad perdida sin tener que reescribir el formato de cientos de líneas de código.
Para implementarlo, simplemente tenemos que agregar unas líneas de código en algún script PHP que se incluya en todo el sitio, de modo que las funciones pasen a estar disponibles para todos los componentes que las requieran. Una buena ubicación para cargarlas es el archivo que contiene los datos de conexión a la base, que siempre va a ser de los primeros en ser incluido o especificado.
Para reponer la funciones de queries MySQL
Existe la librería de Dave Smith que pueden encontrar en este link. Para tu comodidad y sólo en caso de que el link anterior no funcionara, aquí pueden descargar el zip. Extraer y subir los archivos mysql2i.class.php y mysql2i.func.php dentro de una carpeta llamada mysql2i, luego incluir en el código:
include_once('mysql2i/mysql2i.class.php');
Para reponer funciones de la familia ereg
Este código simplemente detecta si faltan las funciones de esta familia y en ese caso define nuevas que van a remplazar a las faltantes usando preg_match, preg_replace y preg_split. Simplemente debemos añadir esta porción de código al principio de algún include común a todo el sitio:
if(!function_exists('ereg')) { function ereg($pattern, $subject, &$matches = []) { return preg_match('/'.$pattern.'/', $subject, $matches); } }
if(!function_exists('eregi')) { function eregi($pattern, $subject, &$matches = []) { return preg_match('/'.$pattern.'/i', $subject, $matches); } }
if(!function_exists('ereg_replace')) { function ereg_replace($pattern, $replacement, $string) { return preg_replace('/'.$pattern.'/', $replacement, $string); } }
if(!function_exists('eregi_replace')) { function eregi_replace($pattern, $replacement, $string) { return preg_replace('/'.$pattern.'/i', $replacement, $string); } }
if(!function_exists('split')) { function split($pattern, $subject, $limit = -1) { return preg_split('/'.$pattern.'/', $subject, $limit); } }
if(!function_exists('spliti')) { function spliti($pattern, $subject, $limit = -1) { return preg_split('/'.$pattern.'/i', $subject, $limit); } }
Espero les sirva y les solucione los problemas principales de retrocompatibilidad para poder usar versiones de PHP más actuales.
Pueden visualizar las fechas en que se discontinuan las distintas versiones de PHP en este link: http://php.net/supported-versions.php
Desde AMPM, al igual que cuando se discontinuó el uso de PHP 5.3 en 2015, vamos a ir eliminando PHP 5.4 y 5.5 de todos los servidores en la medida que se logre hacer que los clientes vayan modernizando sus sitios y aplicaciones. Como objetivo, se debería poder terminar el 2019 sin más soporte a PHP 5.4 y 5.5, poder eliminar totalmente 5.6 antes del 2022, y 7.0 antes del 2023.