Problème avec switch en php

playboy-1990 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   -  
 A.Nonymous -
Bonjour,
Je voudrais savoir comment puis-je faire une condition avec switch et la fonction file_exits()
Voici mon exemple :
<?php 
define ('__MONFICHIER__', '/var/www/library/'); 
switch (??? je mets quoi ?) { 
  case file_exists( __MONFICHIER__ . $file_name): 
  include_once (__MONFICHIER__ . $file_name); 
  break; 
  case file_exists(__MONFICHIER__ . 'Smarty/' . $file_name): 
  include_once (__MONFICHIER__ . 'Smarty/' . $file_name); 
  break; 
  case file_exists(__MONFICHIER__ . 'lib/' . $file_name): 
  include_once __MONFICHIER__ . 'lib/' . $file_name; 
  break; 
        case file_exists(__MONFICHIER__ .'database/' . $file_name): 
  include_once (__MONFICHIER__ .'database/' . $file_name); 
  break; 
  default: 
  return false; 
 } 


Merci
A voir également:

3 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

Le switch sert à comparer la valeur de ce que tu mets entre parenthèse.

Pour plusieurs conditions, il faut faire plusieurs structure conditionnelles.
Donc plusieurs switch ou plusieurs if/else.

switch(file_exists('fichier1')) {
    case true:
        echo 'Ok';
    break;

    case false:
        echo 'Erreur';
    break;
}

if(file_exists('fichier2')) {
    echo 'Ok';
} else {
    echo 'Erreur';
}
0
A.nonymous
 
switch(true)

Un tel "switch" s'arrêtera au 1er case dont la valeur équivaudrait "true" ( pas obligatoirement de même type ), où, si présent, exécuterait "default" si aucun "case" vrai

Ainsi :
case false:
case '':
case null:
// Pas exécuté
break;
case 1:
case 'A.nonymous':
// Exécuté
0
playboy-1990 Messages postés 458 Date d'inscription   Statut Membre Dernière intervention   273
 
Merci beaucoup pour vos aides
J'avais pu comprendre que le switch pouvais remplacer les conditions if, else
mais comme je vois il n'est pas toujours possible de faire la même chose avec switch
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Le switch est à utiliser lorsque tu compares plusieurs fois une même variable (ou une fonction) avec différente valeur. Par exemple :
if($var == 'Valeur 1') {

} elseif ($var == 'Valeur 2') {

} else {
    // Default du switch
}

Devient :
switch($var) {
    case 'Valeur 1':
        // ...
    break;

    case 'Valeur 2':
        //....
    break;

    default:
        // ...
     break;
}
0
A.Nonymous
 
La cas "switch(true)" est un usage particulier qui peut sans mal remplacer une structure if/elseif/else complexe.
L'usage du switch décrit par avion-f16 est effectivement l'usage conventionnel.
Le côté pratique du switch(true) comparé à une structure en "elseif" est qu'il est plus rapide de créer un nouveau cas, mais c'est un point de vue personnel ;)

L'usage d'un switch(true) dans le cas suivant ne serait cependant pas pertinent, même si possible :
switch(true)
{
case $var == 'Valeur 1':
// ...
break;
case $var == 'Valeur 2':
// ...
break;
default:
}
0