JeuWeb - Crée ton jeu par navigateur
Mon contôleur MVC comment l'améliorer? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Mon contôleur MVC comment l'améliorer? (/showthread.php?tid=4790)

Pages : 1 2 3


Mon contôleur MVC comment l'améliorer? - php_addict - 04-05-2010

bonjour

j'ai changé pour MVC (modèle vue controleur) il y a quelques mois et je viens de m'apercevoir d'une amelioration possible

(voir code ci-dessous)

je detecte les _GET et en fonction de cela j'assigne une vue

Le soucis: il se peut que quelques petits malins passent des GET innatendus, il n'y a pas de réels bugs mais c'est ennuyeux, exemple:

mon controleur exemple ne permet que les urls suivantes: url.php?info et url.php?formulaire

mais il se peut que quelqu'un tape dans la barre d'adresse du browser: url.php?info&formulaire ce qui est très ennuyeux...surtout que sur certains controleurs j'ai 10 urls differentes

y a t il un moyen simple pour ne pas faire un truc du genre

Code :
if(isset($_GET['info']) && !isset($_GET['formulaire']) && !isset($_GET['blabla']) && !isset($_GET['beark']) && !isset($_GET['param']))
{
}


???

mon controleur exemple

Code :
//__________________________
// le MODEL ( données )     |
//__________________________|
require_once ('mon_model.php'); ( données )
//
//_______________________________
//  url.php?info                |
//______________________________|
if(isset($_GET['info']) )
{
    // du code
    // du code
    // du code
}
//_______________________________
//  url.php?formulaire          |
//______________________________|
elseif(isset($_GET['formulaire']) )
{
    // du code
    // du code
    // du code
}
//______________
// LES VUES     |
//______________|
if(isset($_GET['info']) )
{
    require_once ("view/ma_vue_info.php");
}
if(isset($_GET['formulaire']) )
{
    require_once ("view/ma_vue_formulaire.php");
}

merci de m'avoir lu

PS: je sais les framework...mais pour ce projet en cours je vais m'en passer, cela fait 7 mois que je suis dessus...déjà....pfff....

bonne journée !


RE: Mon contôleur MVC comment l'améliorer? - Plume - 04-05-2010

Fais :
Code PHP :
<?php 
//______________
// LES VUES |
//______________|
if(isset($_GET['info']) )
{
require_once (
"view/ma_vue_info.php");
} elseif(isset(
$_GET['formulaire'])) {
require_once (
"view/ma_vue_formulaire.php");
}

Ca détermine que l'action/vue est le premier paramètre. Et si le premier paramètre est fucké, ça prend le suivant. En gros, le premier paramètre valide. Toutefois, ça reste inélégant.

Tu devrais déterminer quel contrôleur il faut appeler de manière spécifique (ex: url.php?controller=formulaire). Ca reste plus propre mais on pourrait faire plus sexy Wink

@tchaOo°


RE: Mon contôleur MVC comment l'améliorer? - Allwise - 04-05-2010

Dans les modèles MVC y a souvent une partie routage dont le rôle est de traiter les URL, d'en extraire les infos genre le contrôleur appelé, les paramètres passés, la vue demandée...
Cette partie routage n'est, en principe, pas assurée par le contrôleur lui-même.

Pour répondre à ta problématique, vérifie la présence d'un paramètre qui est toujours le même, plutôt que la présence de variables dont le nom est aléatoire.
Code PHP :
<?php 
if (!empty($_GET['controller'])) {
switch (
$_GET['controller']) {
case
'formulaire':
//....
break;
case
'info':
//....
break;
}
}



RE: Mon contôleur MVC comment l'améliorer? - Anthor - 04-05-2010

http://julien-pauli.developpez.com/tutoriels/php/mvc-controleur/


RE: Mon contôleur MVC comment l'améliorer? - Plume - 04-05-2010

Le truc Thothor, c'est qu'il ne semble pas faire de l'objet. J'ai failli faire la même que toi =)


RE: Mon contôleur MVC comment l'améliorer? - php_addict - 04-05-2010

merci pour vos reponses

donc si j'ai bien compris, vaut mieux:

url.php?control=info
url.php?control=formulaire
url.php?control=blabla

c'est ca ??

(04-05-2010, 03:46 PM)Plume a écrit : Le truc Thothor, c'est qu'il ne semble pas faire de l'objet. J'ai failli faire la même que toi =)

effectivement et vous allez haluciner mais j'avais ma map qui etait en POO avec de jolies classes et de jolies methodes mais j'ai tout repassé en procédurale car je trouvais que cela utilisait moins de memoire et cela allait plus vite...ceci dit je suis pas fortiche en POO meme si je le comprends si il n'y a pas trop d'heritage et ce genre de truc...


RE: Mon contôleur MVC comment l'améliorer? - Argorate - 04-05-2010

En même temps la paternite et la POO Powa c'est l'accumulation d'une multitude de couche... (pas toujours utile)
Normal que ça soit plus lent ^^



RE: Mon contôleur MVC comment l'améliorer? - Sephi-Chan - 04-05-2010

C'est à ce moment que tu aurais dû demander de l'aide et des conseils. Si tu observes des lenteurs, c'est que tu as foiré quelque chose car même les lenteurs induites par l'utilisation d'un framework ne sont pas perceptible pour l'humain.

Argorate, il faudrait avoir une solide expérience dans l'utilisation des frameworks pour pouvoir dire si les surcouches sont utiles ou non. Wink


Sephi-Chan

Edit pour Ter Rowan : ma remarque concerne le développement local. S'il note une différence, c'est qu'il a merdé. Smile


RE: Mon contôleur MVC comment l'améliorer? - Ter Rowan - 04-05-2010

(04-05-2010, 06:09 PM)Sephi-Chan a écrit : car même les lenteurs induites par l'utilisation d'un framework ne sont pas perceptible pour l'humain.

là tu fumes un peu, et je ne le dis pas par religion mais pour l'avoir vécu

les modifications de perf peuvent être tangibles, comme elles peuvent être transparentes, c'est selon, fonction des volumétries et de ce qui est demandé


RE: Mon contôleur MVC comment l'améliorer? - Allwise - 04-05-2010

Des lenteurs quand on passe par un framework peut-être, on peut pas parler d'un framework de façon aussi abstraite, y en a des tonnes et ils sont tous différents.
Mais des lenteurs quand on fait de l'objet par rapport à du procédural, certainement pas.