- <?php
- // Imaginons que votre code est de ce type :
- $var = 1;
- $var2 = 0;
- if ( $var === 0 ) {
- $truc = true;
- } elseif ( $var2 === 0 ) {
- $truc = true;
- } else {
- $truc = false;
- }
- // 6 lignes à écrire pour si peu ? Voici la version compactée :
-
- $var = 1;
- $var2 = 0;
- $truc = ( $var === 0 ) ? true : ( $var2 === 0 ) ? true : false;
-
- // Et oui, en une ligne, j'utilise 2 fois l'opérateur ternaire pour faire comme un if-elseif-else.
- ?>
- <?php
- // ***************** Nouvel exemple un peu plus concret ! *******************
- // Imaginons que vous souhaitez utiliser votre propre mode de session.
- // Pour rappel, l'utilisation d'une session oblige à avoir un id de session pour pouvoir s'y retrouver.
- // Cet id, soit on le fait passer par un cookie, soit par l'URL (jusqu'ici, rien de très compliqué )
- // Ici, l'id sera stocké soit stocké dans un cookie ( $_COOKIE['session_id'] ), ou par passage dans l'url :
- // xxx.php?sid=xopiasj53sdf2483sd453s5
-
- $sid = ( isset($_COOKIE['session_id']) ) ? $_COOKIE['session_id'] : ( isset($_GET['sid']) ) ? $_GET['sid'] : NULL;
-
- ?>
- Après, il faut faire d'autres test pour valider l'id de session, mais ca je m'en fou, ce que je veux présenter, c'est l'emploi du double opérateur ternaire à la place d'un if/elseif/else.
- Voila, l'exemple est un peu plus présentable je trouve.
- Je redonne quand même le même exemple du dessus avec le vieux if/elseif/else :
- <?php
- if ( isset($_COOKIE['session_id']) ) {
- $sid = $_COOKIE['session_id'];
- } elseid ( isset($_GET['sid'] ) {
- $sid = $_COOKIE['session_id'];
- } else {
- $sid = NULL;
- }
- ?>
- Enfin, moi perso, je trouve rebarbatif d'utiliser if/elseif/else pour changer qu'une seule variable. Je trouve l'opérateur ternaire beaucoup plus efficace pour ca.
- Si par contre, il y a d'autres chose à exécuter, l'opérateur ternaire n'est plus à utiliser !
- Il faut savoir l'utiliser au moment opportun !
-
- <?php
- // Dernier exemple :
- if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } elseif ( isset($_SERVER['HTTP_CLIENT_IP']) ) {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
-
- // Ou alors :
- $ip = ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : ( isset($_SERVER['HTTP_CLIENT_IP']) ) ? $_SERVER['HTTP_CLIENT_IP'] : $_SERVER['REMOTE_ADDR'];
- ?>
<?php
// Imaginons que votre code est de ce type :
$var = 1;
$var2 = 0;
if ( $var === 0 ) {
$truc = true;
} elseif ( $var2 === 0 ) {
$truc = true;
} else {
$truc = false;
}
// 6 lignes à écrire pour si peu ? Voici la version compactée :
$var = 1;
$var2 = 0;
$truc = ( $var === 0 ) ? true : ( $var2 === 0 ) ? true : false;
// Et oui, en une ligne, j'utilise 2 fois l'opérateur ternaire pour faire comme un if-elseif-else.
?>
<?php
// ***************** Nouvel exemple un peu plus concret ! *******************
// Imaginons que vous souhaitez utiliser votre propre mode de session.
// Pour rappel, l'utilisation d'une session oblige à avoir un id de session pour pouvoir s'y retrouver.
// Cet id, soit on le fait passer par un cookie, soit par l'URL (jusqu'ici, rien de très compliqué )
// Ici, l'id sera stocké soit stocké dans un cookie ( $_COOKIE['session_id'] ), ou par passage dans l'url :
// xxx.php?sid=xopiasj53sdf2483sd453s5
$sid = ( isset($_COOKIE['session_id']) ) ? $_COOKIE['session_id'] : ( isset($_GET['sid']) ) ? $_GET['sid'] : NULL;
?>
Après, il faut faire d'autres test pour valider l'id de session, mais ca je m'en fou, ce que je veux présenter, c'est l'emploi du double opérateur ternaire à la place d'un if/elseif/else.
Voila, l'exemple est un peu plus présentable je trouve.
Je redonne quand même le même exemple du dessus avec le vieux if/elseif/else :
<?php
if ( isset($_COOKIE['session_id']) ) {
$sid = $_COOKIE['session_id'];
} elseid ( isset($_GET['sid'] ) {
$sid = $_COOKIE['session_id'];
} else {
$sid = NULL;
}
?>
Enfin, moi perso, je trouve rebarbatif d'utiliser if/elseif/else pour changer qu'une seule variable. Je trouve l'opérateur ternaire beaucoup plus efficace pour ca.
Si par contre, il y a d'autres chose à exécuter, l'opérateur ternaire n'est plus à utiliser !
Il faut savoir l'utiliser au moment opportun !
<?php
// Dernier exemple :
if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif ( isset($_SERVER['HTTP_CLIENT_IP']) ) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Ou alors :
$ip = ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : ( isset($_SERVER['HTTP_CLIENT_IP']) ) ? $_SERVER['HTTP_CLIENT_IP'] : $_SERVER['REMOTE_ADDR'];
?>