un Switch réparti sur plusieurs fichiers ?

un Switch réparti sur plusieurs fichiers ? - PHP - Programmation

Marsh Posté le 13-06-2008 à 00:55:28    

:hello:  
 
j'aimerais savoir s'il y a moyen de répartir mon très gros switch sur plusieurs fichiers ?
 
ce que j'ai essayé:
une partie du contenu de 'index.php':
 

Code :
  1. switch{
  2. case 'blabla1': ...;
  3. case 'blabla2': ...;
  4. case 'blabla3': ...;
  5. <? include ("panier.php" ) ?>


 
contenu de panier.php:
 

Code :
  1. case 'blabla4': ...;
  2. }


 
 
le problème est que j'ai droit à une belle erreur, dans index.php il s'attend pas à avoir un include...
est-ce qu'il y a moyen de faire en sorte qu'il prenne en charge l'include avant qu'il cherche a vérifier la syntaxe de mon truc ? (en gros qu'il fasse l'include en premier avant le reste)

Reply

Marsh Posté le 13-06-2008 à 00:55:28   

Reply

Marsh Posté le 13-06-2008 à 02:06:43    

Non pas possible, comme ça, il inclura le code dans ton switch (au niveau de l'include) mais tu es forcément dans un case.
 
En détournant le truc avec un default ça passe pas non plus parce qu'il faut que ça soit du code php (entre balises <?php et ?> ) mais du coup l'interpréteur compile le code du fichier avant de l'inclure et ça pète parce que tu as un case sans switch (et oui il existe pas encore pour lui :D )
 
 
Pour le côté technique c'est fait. Mais la première réaction que j'ai eu avant de vérifier quand même que ça passait vraiment pas, c'est diable pourquoi vouloir faire un truc comme ça? Y'a un problème conceptuel ou de choix de la méthode.
A moins que le but recherché me dépasse :whistle:
 
Dis nous ce que tu veux faire y'a surement un moyen bête. D'ailleurs de la POO avec de l'héritage ça irait pas :??:

Reply

Marsh Posté le 13-06-2008 à 02:12:19    

En plus là dès le départ tu as une erreur de syntaxe à la ligne 5, y'a du code php donc déjà une balise ouvrante et tu réouvres...
 
Au passage, utilises plutôt <?php que <? pour éviter les confusion avec le prologue xml :)

Reply

Marsh Posté le 13-06-2008 à 12:07:05    

mmh oui leflos5 en effet, là il faut mettre directement le include sans balise php  ;)  
 
 
alors en fait pourquoi je voulais faire ça, c'est car sur mon site j'ai un gros switch('$action'), la variable $action détermine tout ce que je fais sur le site (aller ici, aller à telle page, toute la partie admin...).
et au lieu de mettre ça en 1 page, j'aimerais avoir une page 'index.php", une 'panier.php', une 'admin.php' pour pas avoir un seul énorme bloc avec plein de case de partout.
 
évidemment je pourrais faire un Switch séparé sur chaque page, mais le problème est que je voudrais utiliser le 'default', et il ne serait utile que si c'était un seul gros switch (si j'en ai plusieurs le case default se déclencherait plus souvent que je le veux).
 
bon sinon go pour l'unique page massive, j'essayerais de clarifier le code avec des commentaires  ;)

Reply

Marsh Posté le 13-06-2008 à 12:09:22    

[:pingouino]

 

Et des fonctions, des classes, tout ça, concepts inconnus et inabordables?????


Message édité par skeye le 13-06-2008 à 12:09:38

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2008 à 12:13:29    

ouch :sweat:


---------------

Reply

Marsh Posté le 13-06-2008 à 14:09:25    

xphanoo a écrit :

:hello:  
 
j'aimerais savoir s'il y a moyen de répartir mon très gros switch sur plusieurs fichiers ?
 
ce que j'ai essayé:
une partie du contenu de 'index.php':
 

Code :
  1. switch{
  2. case 'blabla1': ...;
  3. case 'blabla2': ...;
  4. case 'blabla3': ...;
  5. <? include ("panier.php" ) ?>


 
contenu de panier.php:
 

Code :
  1. case 'blabla4': ...;
  2. }


 
 
le problème est que j'ai droit à une belle erreur, dans index.php il s'attend pas à avoir un include...
est-ce qu'il y a moyen de faire en sorte qu'il prenne en charge l'include avant qu'il cherche a vérifier la syntaxe de mon truc ? (en gros qu'il fasse l'include en premier avant le reste)


 
tu utilises quelle version de PHP ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed