IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Front Controller et rechargement


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Front Controller et rechargement
    Bonjour à tous,

    voilà j'ai développé un site internet avec ma version du front controller:

    1-Index.php (mon front controller) dirige les actions vers des sous contrôleurs
    2-Ces sous contrôleurs traitent l'information et font appel au modèle (base de données mysql)
    3-Affichage de la vue avec des include().

    Mon principal soucis est le suivant: je recharge tout le temps tous les éléments de mon site. En effet renvoyant toujours tout vers l'inex.php il me recharge tout:
    -Problème de performances?
    -Rechargement de mon menu = pas de mise en avant de la partie sélectionné (surlignage de mon sous menu).

    Que faire pour ne pas tout recharger avec un front controller ?

    Merci.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Qu'est-ce que tu entends par "il me recharge tout" ?

    J'espère quand même que ton index.php est capable de déterminer ce dont il va avoir besoin ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse.

    Voici concètement mon index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
     
    session_start();
     
     
     
    //langue française par défaut
    if (!isset($_SESSION['lang'])) {   
        $_SESSION['lang'] = 'fr';
    }
    include('./vues/v_header.php');
     
    if (!isset($_SESSION['login'])) {   
        include('./vues/login.php');
    } else {
        if (isset($_REQUEST['uc'])) {
            $uc = $_REQUEST['uc'];
        } else {
            $uc = 'accueil';
        }
        switch ($uc) {
            case 'accueil': {
                    include('./controleurs/c_voirProduits.php');
                }
                break;
     
            case 'connexion': {
                    include('./controleurs/c_connecter.php');
                }
                break;
     
            case 'voirProduits':{
                    include('./controleurs/c_voirProduits.php');
            }break;
        }
        include('./vues/v_footer.php');
    }
    ?>
    Je lui passe toute par l'url, le soucis c'est que mon controller principal n'en est pas vraiment un en fait... Comment changer ça ?

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Théoriquement, vu qu'il vous faut afficher une page complète, il est normal que vous deviez "tout recharger".

    Théoriquement toujours, vous ne devriez avoir que des définitions de constantes & variables, connexion à une base de données, gestion des pages, etc dans votre "front controller".
    Les requêtes propres aux différentes pages devraient être appelées depuis les controllers propres à ces pages. Je ne vois alors aucun problème de performance.

    D'après ce que je vois, nous avons-là une code performant et sécurisé. Le seul bémol est la non-gestion des 404. J'aurais moins mis la page d'accueil avec un "case default" en plus :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    switch ($uc) {
    	case 'connexion':
    		include('./controleurs/c_connecter.php');
    		break;
     
    	case 'voirProduits':
    		include('./controleurs/c_voirProduits.php');
    		break;
    	case 'accueil':
    	default:
    		include('./controleurs/c_voirProduits.php');
    		break;
    }

    NB 1: On ne met pas d'accolades dans les "case" de la fonction switch()
    NB 2: Habituellement, on mettre le cas par défaut tout en bas. C'est plus propre/lisible, et certains langages l'obligent d'ailleurs

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Théoriquement, vu qu'il vous faut afficher une page complète, il est normal que vous deviez "tout recharger".
    Ah il me semblait bien que j'avais peu de solution qui s'offrait à moi. A part l'ajax je ne vois pas comment faire pour ne charger qu'une partie de ma page, et je vais pas tout me taper en ajax

    D'après ce que je vois, nous avons-là une code performant et sécurisé.
    Ah vous me rassurez

    Je prends bien note de vos conseils et je vous remercie pour votre intervention.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/04/2015, 18h40
  2. Conception MVC - page controllers ou front controller (PHP)
    Par MorganStern dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 03/02/2013, 15h25
  3. Front controller avec redirection
    Par rolintoucour dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2011, 19h35
  4. Control et recharge de Donnée
    Par hawk91 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/04/2009, 09h15
  5. ACTIVE X Controle recharger
    Par philippe V dans le forum MFC
    Réponses: 4
    Dernier message: 16/01/2004, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo