Quelques astuces de syntaxe du langage PHP qu'on rencontre rarement.
Initialisation de constantes et de variables avec l'opérateur OR
On utilise ici une optimisation de PHP qui lorsqu'il rencontre plusieurs expressions combinées avec l'opérateur OR, arrête son évaluation lorsque une des expressions renvoie true.
Cette astuce permet d'initialiser une constante seulement lorsqu'elle n'est pas encore définie.
define('MA_CONSTANTE', 1); echo MA_CONSTANTE . "\n"; // Affiche 1 // La ligne suivante n'a aucun effet puisque MA_CONSTANTE est déjà initialisée defined('MA_CONSTANTE') || define('MA_CONSTANTE', 2); echo MA_CONSTANTE; // Affiche toujours 1
Vous pouvez également initialiser une variable de cette manière :
$a = 1; isset($a) || $a = 'Ma valeur'; // Sans effet var_dump($a); // Affiche int(1) isset($b) || $b = 'Ma valeur'; var_dump($b); // Affiche string(9) "Ma valeur"
Attention cependant, le code suivant ne fonctionne pas (l'évaluation renvoie toujours un booléen).
$a = isset($a) || 'Ma valeur'; var_dump($a); // Affiche bool(true)
L'opérateur ternaire
Plus connu, c'est une version courte de if/else.
$monParametre = isset($_POST['mon_parametre']) ? $_POST['mon_parametre'] : 0;
Si le paramètre existe dans le tableau $_POST, on l'affecte à la variable $monParametre, sinon on initialise cette dernière avec la valeur 0.
Fonction avec un nombre variable d'argument
function maFunction() { $args = func_get_args(); echo implode(', ', $args); } echo maFunction() . "\n"; // N'affiche rien echo maFunction('a', 'b') . "\n"; // Affiche a ,b echo maFunction('a', 'b', 'c'); // Affiche a ,b, c
En fait, on définit une fonction sans préciser le détail de ses arguments, puis on récupère ces derniers à l'aide de func_get_args. C'est plus pratique et plus propre que d'utiliser un tableau comme seul argument.
La méthode find de Zend_Db_Table_Abstract utilise cette technique, ce qui permet de passer une clé primaire sur plusieurs colonnes.
Négation
Saviez vous qu'on pouvait faire ça en PHP ?
$a = 1; echo -$a; // Affiche -1
Moi non. Jusqu'ici, je multipliais systématiquement ma variable par -1.
Opérateur d'exécution
Avec l'apostrophe inversée (`), on peut exécuter une ligne de commande.
echo `dir`; // Affiche le résultat de la commande DIR sous Windows



Poster un nouveau commentaire