Php 7 was uitgebracht in december 2015 en actieve ondersteuning voor Php 5 zal tot 31 december 2016 worden gegeven. Ondanks dat de security security releases voor Php 5.6 doorlopen tot januari 2019, is het verstandig om alvast naar Php 7 te kijken, omdat nieuwe libraries langzaamaan ondersteuning voor Php 5 zullen stoppen. Zie de Supported Versions pagina van Php voor de details.
Als je migreert naar Php 7 loop je waarschijnlijk tegen de volgende twee dingen aan,
- backward incompatibele taal wijzigingen
- deprecated api calls en modules
Een lijst van incompatibele taal wijzigingen kan gevonden worden op http://php.net/manual/en/migration70.incompatible.php Er zijn grote wijzigingen in de afhandeling van excepties en variabelen. Voornamelijk de nieuwe methode voor het evalueren van multi-dimensionele array's kan tricky zijn met bestaande code.
Deprecated API calls die een E_DEPRECATED notice gaven in Php 5 zijn in Php 7 daadwerkelijk verwijderd. Deze wijzgingen geven fatal errors en zijn makkelijk te vinden. Hoewel het natuurlijk verstandiger is om oude code te herschrijven naar de nieuwe API is het ook mogelijk om een wrapper te schrijven voor deze functies. Als je een erg groot betaand project hebt kan dit erg veel tijd schelen.
Voor het afhandelen van mysql_* functies heb ik de volgende wrapper geschreven,
/**
* backwards compatibility old php functions
*/
if (function_exists('mysql_connect') == false) {
function mysql_connect($server, $username, $password, $new_link = false, $client_flags) {
$key = $server.$username.$password;
if (isset($GLOBALS['mysql_cons']) == false) {
$GLOBALS['mysql_cons'] = false;
}
if ($new_link == false && isset($GLOBALS['mysql_cons'][$key])) {
return $GLOBALS['mysql_cons'][$key];
}
$con = new mysqli($server, $username, $password);
if (isset($GLOBALS['mysql_cons'][$key]) == false) {
$GLOBALS['mysql_cons'][$key] = $con;
}
if (isset($GLOBALS['mysql_cons']['default']) == false) {
$GLOBALS['mysql_cons']['default'] = $con;
}
$r = $con->connect($server, $username, $password);
if ($r === false)
return false;
return $con;
}
function mysql_select_db($dbname, $con=null) {
if ($con == null) {
$con = $GLOBALS['mysql_cons']['default'];
}
$r = $con->select_db($dbname);
return $r;
}
function mysql_query($query, $con) {
if ($con == null) {
$con = $GLOBALS['mysql_cons']['default'];
}
return $con->query($query);
}
function mysql_real_escape_string($val, $con=null) {
if ($con == null) {
$con = $GLOBALS['mysql_cons']['default'];
}
return $con->escape_string($val);
}
function mysql_insert_id($con=null) {
if ($con == null) {
$con = $GLOBALS['mysql_cons']['default'];
}
return $con->insert_id;
}
function mysql_error($con=null) {
if ($con == null) {
$con = $GLOBALS['mysql_cons']['default'];
}
return $con->error;
}
function mysql_fetch_assoc($result) {
$row = $result->fetch_assoc();
return $row;
}
function mysql_fetch_array($result) {
$row = $result->fetch_array();
return $row;
}
function mysql_num_rows($result) {
return $result->num_rows;
}
}
if (function_exists('split') == false) {
function split($pattern, $string, $limit=-1) {
return preg_split('/'.$pattern.'/', $string, $limit);
}
}