Aller au contenu | Aller au menu | Aller à la recherche


PHP 7.0 changements et configuration

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 :

Les modifications de PHP 7

Les extensions PECL incompatibles ou pas encore disponible (sous Windows)

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

Outil en ligne de benchmark et comparaison du code des différentes versions de PHP

3v4l.org

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet