Top astuces PHP que vous ne connaissez pas

Partant de Personnal Home Page, à PHP/FI (Personnal Home Page Interactive Form) pour arriver à Php HyperProcessor, Le langage PHP n’a subi que des ajouts et améliorations de fonctionnalités du jour au lendemain. Ces ajouts et améliorations sont si fréquents qu’apprendre hier nous pousse à apprendre aujourd’hui pour être à jour même pour ceux qui ont déjà un niveau avancé.
Dans cet article, je vous parle des astuces PHP que peu de monde connaisse et je parie que vous les en connaissez pas même si vous avez déjà un niveau avancé en ce langage.

Opérateur d’exponentiation

Pour effectuer un calcul exponentiel en PHP, l’habitude courant est d’utiliser la fonction pow()

<?php 
echo pow(2, 3) ; //8  
echo pow(4, 2) ; //16

Il y a un opérateur ** ajouté depuis la version 5.6 de PHP qui permet de faire simple à l’instar de +, *.

<?php 
echo 2 ** 3 ; //8 
echo 4 ** 2 ; //16 

L’opérateur Null-coalescence

Un code du genre, l’aviez-vous déjà fait ? Oui, j’en suis sûr !

<?php

$nom = '';
if(isset($_POST['nom']))
{
  $nom = $_POST['nom'];
}

//Ou encore de manière plus concise avec le ternaire

$nom = isset($_POST['nom']) ? $nom : '';

?>

Avec l’opérateur null coalescence qui est disponible qu’à partir de la version 7 PHP, la syntaxe de ce code est beaucoup plus simplifiée.

<?php

$nom = $_POST['nom'] ?? '';

?>

Et il est possible d’enchainer l’opérateur null-coalescence comme suit

<?php

$nom = $_GET['nom'] ?? $_POST['nom'] ?? ''

/* Si $_GET['nom'] n'est pas défini, $_POST['nom'] est affecté à $nom. Si non, '' 
est affecté à $nom et ansi de suite */
?>

 

Heredoc et Nowdoc

Hormis le simple et double guillemet, Il existe deux autres manières de délimiter une chaine de caractère en PHP que peu de gens connaissent. Sans surprise ce sont donc la syntaxe Heredoc et Nowdoc

Heredoc

La syntaxe heredoc est constituée de 3 signes d’infériorité (<<<) suivis d’un identifiant et d’une nouvelle ligne. L’identifiant servira de marquer la fin de la chaine suivi d’un point-virgule.

<?php

$texte = <<<debut
Ma chaine de caractère peut s’écrire calmement dans 
cette section avec le support de $variable. 
Bien évidement mon texte peut être 
entre ‘un simple quotte’ ou « un double quotte »
debut;

Le marquage de fin doit être au début de la ligne et ne doit être suivi d’aucun texte c-a-d, il  doit être seul dans une ligne.

Nowdoc

Nowdoc est similaire à herefoc, avec une simple différence que l’identifiant délimiteur doit être entouré d’un simple quotte et aucune interprétation de variable ou quoi que ce soit se fait.

$texte = <<<’debut’
Mon texte en nowdoc est juste là où aucune $variable sera interprété
'debut';

Type de valeur de retour d’une fonction ou méthode

Ceux qui viennent de C ou Java savent de quoi je parle. PHP permet de faire omission de type de valeur de retour d’une fonction ou méthode. Cela ne veut pas dire qu’il ne le permet pas. Voici comment déterminer le type de valeur de retour d’une fonction

<?php

function myFunction() : String {
    return 'je lis ceci sur Informagenie';
}
echo myFunction() //Affiche 'je lis ceci sur Informagenie'

Et quand le type de valeur de retour ne correspond pas à ce qui était indiqué, une erreur fatale est invoquée.

<?php
function maFonction() int {
    return ‘je lis ceci sur Informagenie’ ;
}
echo maFonction() // Déclenche une erreur

Les variables dynamiques

Déclarer une variable en PHP, quel jeu d’enfant, juste un signe $ précédé du nom qu’on veut donner à la variable. Mais PHP permet aussi de déclarer dynamiquement une variable.

<?php
$a = 'bonjour' ;
$$a = 'monde' ;
echo $a ; //Bonjour
echo $bonjour // monde
echo ${$a} //monde

La valeur de $a ‘bonjour’ est utilisée comme nom de la variable. Dans $$a, $a est d’abord interprété, ce qui équivaut à ‘bonjour’ puis est utilisé comme déclaration de la variable $bonjour = ‘monde’. Dans echo ${$a}, $a est d’abord interprété après que sa valeur ‘bonjour’ soit utilisée pour afficher la valeur de $bonjour.

Importation des fonctions et constantes d’un namesapce

Avec l’utilisation des namespaces en PHP, on importe facilement une classe d’un namespace donné avec l’utilisation de l’opérateur use.

<?php
	namespace Users\Informagenie
	{
		class Goms
		{
			const name = 'MBUNGU NGOMA';
		}
	}
	namespace Users\Graphcet
	{
		class Goms 
		{
			const name = 'MBUNGU';
		}
	}
	namespace {
		use Users\Informagenie\Goms as Informagenie;
		use Users\Graphcet\Goms as Graphcet;
		echo Informagenie::name; //MBUNGU NGOMA
		echo Graphcet::name; //MBUNGU	
	}
?>

Quid de l’utilisation d’une fonction ou d’un constant d’un namespace donné ? Et ben il y a use function et use const.

<?php
	namespace Users\Informagenie
	{
		function hello()
		{
			echo 'hello le monde depuis Informagenie';
		}
	}
	namespace Users\Graphcet
	{
		function hello()
		{
			echo 'hello le monde depuis Graphcet';
		}
	}
	namespace {
		use function Users\Graphcet\hello as GHello;
		use function Users\Informagenie\hello as IHello;
		IHello(); // Hello le monde depuis Informagenie
		GHello(); // Hello le monde depuis Graphcet
	}
?>

 

Mutation de valeur de deux variables

Soit deux variables :

<?php
$a = 1 ;
$b = 2 ;

Si je veux affecter la valeur de $a dans $b et vice versa, Il faut

<?php

$a = 1 ;
$b = 2 ;
$tmp = $a ;
$a = $b ;
$b = $tmp ;
unset($tmp) ;

?>

Je peux faire simple avec une affectation par décomposition

<?php 

$a = 1 ;
$b = 2 ;
[$a, $b] = [$b, $a] ;
echo $a ; // 2
echo $b ; //1

Enfin, PHP est actuellement dans sa 7ème qui a déjà subie plusieurs révisions. Se mettre à jour est le moyen le plus simple pour rester à jour parce que tout bouge vite. Que d’entre ces astuces connaissiez-vous avant ? Partagez aussi vos astuces dans le commentaire.

Add Comment