PHP 7.0 changements et configuration
Par PlaceOweb le jeudi, octobre 13 2016, 07:00 - PHP - Lien permanent
Petit tour d'horizon des modifications sur PHP 7.0 qui succède à la version de PHP 5.6 et qui se veut plus rapide...
Suppression de fonctionnalités
L'extension mysql remplacée au choix par : mysqli ou PDO_MySQL
Fini tous les appels : mysql_* : mysql_connect, mysql_select_db, mysql_query, mysql_fetch_row, mysql_fetch_assoc, ..., mysql_close
// PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect()
// @deprecated : obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
$conSql = mysql_connect($DBhost, $DBuser, $DBpass) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($DBName);
mysql_query("SET NAMES utf8");
// remplacement avec mysqli :
$mysqli = mysqli_connect($DBhost,$DBuser,$DBpass) or die("Can't connect $DBhost");
mysqli_select_db($mysqli, $DBName) or die("Can't select DB $DBName");
mysqli_query($mysqli , "SET NAMES utf8");
// remplacement avec PDO :
$dsn = 'mysql:dbname='.$DBName.';host='.$DBhost;
try {
$pdo = new PDO($dsn, $DBuser, $DBpass, array(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connexion échouée : ' . $e->getMessage();
}
Fonctions POSIX Regex : ereg, eregi, ereg_replace, eregi_replace, split, spliti
// @deprecated : obsolète en PHP 5.3.0, et a été SUPPRIMÉE en PHP 7.0.0.
$old_patern = "[A-Z]";
ereg ( $old_patern , $string );
$new_patern = "/[A-Z]/";
$new_patern = "/[A-Z]/i"; // pour insensible à la casse
preg_match ( $new_patern , $string );
Les petits trucs sympas parmi les nouvelles fonctionnalités
L'affectation via "Null coalescing operator" ou "Null coalescing assignment operator"
// Avant PHP 7
$_GET['utilisateur'] = isset($_GET['utilisateur']) ? $_GET['utilisateur'] : 'nobody';
$username = isset($_GET['utilisateur']) ? $_GET['utilisateur'] : 'nobody';
// A partir de PHP 7.0
$_GET['utilisateur'] = $_GET['utilisateur'] ?? 'nobody'; // Equivalent à : $_GET['utilisateur'] = isset($_GET['utilisateur']) ? $_GET['utilisateur'] : 'nobody';
$username = $_GET['utilisateur'] ?? 'nobody';
// A partir de PHP 7.4
$_GET['utilisateur'] ??= 'nobody';
$username = $_GET['utilisateur'] ?? 'nobody'; // L'affectation vers une autre variable ne peut pas utiliser l'opérateur ??=
PHP 7.0 : Null coalescing operator : "'Opérateur Null coalescent"
PHP 7.4 : Null coalescing assignment operator : "Opérateur d'assignement de fusion Null"
Notes de PHP 7.4 – Null Coalesce Assignment Operator
Cet opérateur est utile si vous pouvez vérifier si la valeur de la variable est nulle et que vous souhaitez lui attribuer une autre valeur dans ce cas. Cependant, cet opérateur ne fonctionne pas si vous essayez d'affecter les valeurs à une variable différente. Ainsi, par exemple, dans le cas suivant, vous ne pouvez pas utiliser l'opérateur d'assignation de coalescence nulle, mais vous pouvez toujours utiliser l'opérateur de coalescence nul.
Les versions de PHP7.x et son avancement sur :
- PHP/NEWS ou PHP/NEWS
- PHP Quality Assurance Team Web Page
- Téléchargement des dernières compilations instantanés : PHP windows Snapshots
Les modifications de PHP 7
- Ce que vous devez savoir sur PHP7 concrètement
- PHP 7 – Nouveautés de la nouvelle version de PHP
- Migrating from PHP 5.6.x to PHP 7.0.x
Les extensions PECL incompatibles ou pas encore disponible (sous Windows)
- Fournissant également un gestionnaire de session
Au besoin, il faudra le compiler à la main, par exemple : Memcache for PHP7 on Windows? selon la procédure Build your own PHP on Windows > Building PECL extensions
Version et fin de vie
Versions stables
- 13/10/2016 : PHP 7.0.12 et son ChangeLog
- 15/09/2016 : PHP 7.0.11 et son ChangeLog
- 19/08/2016 : PHP 7.0.10 et son ChangeLog
- 21/07/2016 : PHP 7.0.9 et son ChangeLog
- 23/06/2016 : PHP 7.0.8 et son ChangeLog
- 26/05/2016 : PHP 7.0.7 et son ChangeLog
- 29/04/2016 : PHP 7.0.6 et son ChangeLog
- 31/03/2016 : PHP 7.0.5 et son ChangeLog
- 03/03/2016 : PHP 7.0.4 et son ChangeLog
- 04/02/2016 : PHP 7.0.3 et son ChangeLog
- 07/01/2016 : PHP 7.0.2 et son ChangeLog
- 17/12/2015 : PHP 7.0.1 et son ChangeLog
- 03/12/2015 : PHP 7.0.0 et son ChangeLog