Améliorer une suite de conditions php

WRInaute impliqué
Bonjour,

j'aimerai savoir si c'est possible d'améliorer et de réduire cette suite de conditions php :

Code:
if($_GET == null){
	
	include("templates/pages/home.php");	

}else{

	if(isset($_GET['page'])){
		
		switch ($_GET['page']) {
		case 'terms-and-conditions': include("templates/pages/terms-and-conditions.php"); break; 
		case 'privacy-policy': include("templates/pages/privacy-policy.php"); break; 
		default: include("templates/pages/404.php");
		}
		
	}elseif(isset($_GET['city'])){
		
		include("templates/pages/home.php");	
		
	}else{
		
		include("templates/pages/404.php");	
		
	}
}

Merci pour votre aide
 
WRInaute discret
Personnellement plutôt que d'avoir 6 include, j'en conserverais 1 et je mettrais en variable le nom du fichier à inclure.
Ensuite de façon général, plutôt que de tester différentes variables vides, je déclarerais une seule variable qui gère le type de contenu. C'est plus propre et plus simple à maintenir. Donc ça suppose de ne plus faire $_GET['city'] mais $_GET['page'] = 'city'

Code:
// déclare la variable
if(isset($_GET['page']) $page = $_GET['page'];
else $page = "valeurParDefaut";

// contrôle sa valeur
switch($page){
case 'terms-and-conditions' :
    $f = 'terms-and-conditions.php';
    break;
case 'privacy-policy' :
    $f = 'privacy-policy.php';
    break;
case 'city' :
    $f = 'home.php';
    break;
default
    $f = '404.php';
    break;
}

// import le fichier
include("templates/pages/".$f);

Sinon tu peut utiliser un tableau associatif. Mais là encore il vaut mieux utiliser une variable pour gérer la page.

Code:
// définit les pages
$pageLst = array(
'terms-and-conditions'=>'terms-and-conditions.php', 
'privacy-policy'=>'privacy-policy.php', 
'city'=>'home.php'
);

// cherche la page
if(isset($_GET['page']) && isset($pageLst[$_GET['page']])) $f = $pageLst[$_GET['page']];

// vérifie si on a trouvé quelque chose
if(empty($f)) $f = '404.php';

// import le fichier
include("templates/pages/".$f);

Voilà deux pistes différentes. En espérant que ça aide.
 
WRInaute accro
Perso je gère ça dans le .htaccess et j'ai ensuite plusieurs scripts php pour chaque type de page.

Donc quand un de ces scripts s'exécute je sais que je suis sur un tel type de page et je n'ai pas besoin de tester tout ça. Je récupère simplement le numéro de l'article à afficher et s'il n'existe pas en base alors un message comme quoi c'est inconnu, sinon je formate la page avec les données récupérées en base.
 
Discussions similaires
Haut