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 :

Est-ce que cette syntaxe du MVC vous semble correcte ?


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Est-ce que cette syntaxe du MVC vous semble correcte ?
    Bonjour à tous,

    Je suis occupé à apprendre MVC.

    Un étudiant m'a fait une démo cet après-midi, je voudrais savoir ce que vous pensez de sa façon d'utiliser le MVC et surtout savoir si cela vous semble correct ?

    1) Il me dit que "index.php" correspond au controler, est-ce correct ?

    2) voici le code de 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
    <?php
    session_start();
     
    #les variables globales
    require('./includes/VariablesGlobales.php');
    # Fonctions BD et Fonctions Métier 
    require('./includes/fonctionsDB.php');
    # Fonctions qui génèrent de l'HTML
    # Elles seront appelées dans le contrôleur principal (index.php) et/ou ses actions (les autres modules) tous revient vers index
    require('./includes/fonctionsHTML.php');
     
    // Connexion à la base de donnée
    try {
        $dbh = connexionDB();
    } catch (PDOException $e) {
        erreur(1);
    }
     
    # Constructions des éléments HTML communs à toutes les vues
    $header = header_page($titre, $css);  //$titre et $css se trouvent dans variables_gloabes.php
    $menu   = menu();
    $footer = footer_page($email);
     
    $modules = array('login','accueil','inscription','salles','reserver','erreur'); 
    // Quelle action est demandée par l'utilisateur dans l'URL ?
    if (isset($_GET['module']) && in_array($_GET['module'],$modules)) {
    	# Inclusion du code contrôleur correspondant à l'action demandée
    	require('./modulles/' . $_GET['module'] . '.php');
    } 
    else {
        # Inclusion du code contrôleur de la page d'accueil
        require('./modules/accueil.php');
    }
    ?>
    Voici le code de la page fonctionsHTML.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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    <?php
     
    # Fonction qui renvoie le code HTML de l'en-tête de toutes les pages
    function header_page($titre, $css) {
    	$header ="";
    	$header.="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";
    	$header.="<html>\n";
    	$header.="<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" >\n";
    	$header.="<link rel=\"stylesheet\" type=\"text/css\" href=\"$css\" media=\"all\" >\n";
     
    	$header.="<title>$titre</title>\n</head>\n";
    	return $header;
    }
     
    # Fonction qui renvoie le code HTML du menu de toutes les pages
    function menu() {
    	$menu ="";
    	$menu.="<ul>
    			<li><a href=\"?module=acceuil\">Accueil</a></li>
    			<li><a href=\"?module=salles\">Reserver une salle</a></li>
    			";
    	if (isset($_SESSION['utilisateur'])) {
    		$user = $_SESSION['utilisateur'];
    		if($user->isAdministrateur){
    			$menu.="<li><a href=\"?module=inscription\">Inscrire un nouveau membre</a></li>";
    		}
    	}
    		$menu.="<li><a href=\"logout.php\">Deconnexion</a></li>";
    	$menu.="</ul>";
    	return $menu;
    }
     
    // Fonction qui renvoie le code HTML du pied de toutes les pages
    function footer_page($email) {
    	$footer ="";
    	$footer.="<strong> date du jour" . date("j/m/Y") ." :: </strong>";
    	# ! adresse email non cryptée : spam possible
    	$footer.="<a href=\"mailto:";
    	$footer.=$email;
    	$footer.="\">";
    	$footer.=$email;
    	$footer.="</a>\n";
    	return $footer;
    }
     
     
     
    # Fonction qui renvoie le code HTML du formulaire d'ajout d'un utilisateur
    function form_inscription() {
    	$form ='
    	<form action="#" method="post">
    	<p>Matricule :<input type="text" name="matricule" /></p>
    	<p>Mot de passe : <input type="text" name="mdp" /></p>
    	<p>Nom :<input type="text" name="nom" /></p>
    	<p>Prenom :	<input type="text" name="prenom" /></p>
    	<p>email :	<input type="text" name="email" /></p>
    	<p>Administrateur : <input type="checkbox" name="administrateur" value="0" unchecked/></p>
    	<p><input type="submit" value="Enregistrer"></p>
        </form>
    	';
    	return $form;
    }
     
     
     
    # Fonction qui renvoie le code HTML du formulaire de login
    function form_login() {
    	$form ='
    	<form action="#" method="post">
    	<p>Matricule : <input type="text" name="matricule" /></p>
    	<p>Mot de passe : <input type="password" name="mdp" /></p>
    	<p><input type="submit" value="Se connecter"></p>
        </form>
    	';
    	return $form;
    }
     
    function boite_erreur($html) {
        print'<div id="msg_erreur"><h3>Une ou plusieurs erreurs se sont produites :</h3>';
        print $html;
        print'</div>';
    }
     
    ?>
    et voici le code de la page inscription.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
     
    <?php
    // Connexion à la base de donné
    try {
    	$dbh = connexionDB();
    } catch (PDOException $e) {
    	erreur(1);
    }
     
    if (isset($_POST['matricule']) && isset($_POST['mdp']) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) ) {
     
    	enregistrementUtilisateur($dbh, $matricule, $mdp, $nom, $prenom, $email, $_POST['souvenir']);
    	print "<p>Enregistrement reussie</p>";
    	header('location: ?module=accueil');
     
    }else{
    	boite_erreur("<p>Erreur, Aucun champ ne doit être vide!!!</p>");
    }
     
    form_inscription();
     
    ?>
    Je me demandais donc si cette méthode MVC était correcte ?

    Merci d'avance.

    bee

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    J'ai pas regardé en détail mais sur le principe c'est ça. Le contrôleur défini les actions à entreprendre en fonctions des variables. Evidemment suivant le contexte cela peut engendrer des sous contrôleurs.
    En même temps faut pas être trop rigide avec le modèle MVC sinon on aboutit à des aberrations. C'est le principe qui est intéressant, pas son application à la lettre.

    Au passage évite l'encodage iso-8859-1, l'utf-8 est de rigueur de nos jours. Et tant qu'à faire tu pourrais aussi passer directement à une déclaration html 5 (tout en utilisant le même code).

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour ta réponse.

    La façon utilisée par mon étudiant me semble très intéressante et assez facile à comprendre.

    Je continue donc dans ce sens.

    Merci aussi pour les infos supplémentaires.

    Tu me parles d'HTML5, tu crois qu'il est important de passer à HTML 5 et surtout, tu crois que ça fonctionne correctement avec les anciens browsers (encore trop utilisé) ?

    Merci pour tout.

    bee

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par beegees Voir le message
    Salut,

    Merci aussi pour les infos supplémentaires.

    Tu me parles d'HTML5, tu crois qu'il est important de passer à HTML 5 et surtout, tu crois que ça fonctionne correctement avec les anciens browsers (encore trop utilisé) ?

    Merci pour tout.

    bee
    Ce que je veux dire c'est que tu peux avoir une déclaration du doctype en html 5 tout en utilisant ton code actuel et sans nécessairement utiliser les balises html5 (surtout celles qui ne sont pas compatibles avec les anciens navigateurs).
    Alors à quoi ça sert ?
    Par exemple tu pourras utiliser certains attributs ex "data" qui même s'ils ne sont pas reconnus par tous les navigateurs te permettront de récupérer des valeurs en javascript (donc quelque soit le navigateur) tout en ayant un code conforme.
    Et puis avec le temps tu pourras insérer des balises strictement html5, tout ça sans avoir à changer ton doctype

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Quitte à apprendre le MVC autant éviter d'entrée les approximations.
    La page index.php ne doit pas être considérée comme un contrôleur, c'est un point d'entrée et comme tout point d'entrée, il ne doit se charger que du démarrage de l'environnement d'exécution puis passer la main à un autre objet : (généralement) le FrontController qui lui va anlyser la requête et devra dans tous les cas lui apporter une réponse.

    Il faut faire attention à ne pas trop accorder de responsabilités à un élément.
    MVC = DIVISER POUR MIEUX REGNER

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031

Discussions similaires

  1. [MySQL] est ce que cette méthode est juste
    Par info_sara dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 13/06/2008, 20h08
  2. Réponses: 3
    Dernier message: 20/11/2007, 20h23
  3. Est ce que cette requête est possible ?
    Par dubidon dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2007, 11h24
  4. Est-ce que cette ligne est obligatoire ? (<!DOCTYPE html.
    Par cvb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 11/12/2005, 00h07
  5. Est ce que cette ram peut aller sur mon pc?
    Par Death83 dans le forum Composants
    Réponses: 3
    Dernier message: 29/09/2005, 11h58

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