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 :

Mon pattern est il bien MVC ? [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Mon pattern est il bien MVC ?
    Bonsoir chers amis développeurs,
    Je suis actuellement entrain développer mon blog perso, celui-ci reposant sur les technologies web actuels (HTML, CSS, PHP, etc ...).
    Pour l'architecture de ce dernier, je me suis tourné vers du MVC, cela me donne l'occasion de l'appréhender, ce qui n'est pas un mal tant ce pattern est répandu !
    Toutefois, après m'être renseigné sur le MVC et avoir commencé a développer en suivant ce modèle, j'en viens à me demander si je développe vraiment en MVC, car d'après ce que je vois même si le MVC reste dans les grandes lignes identiques, chaque document que je lis au sujet du MVC montre un MVC construit differemment de l'autre, j'ai l'impression que chacun a son MVC, par conséquent, j'ai du mal à identifier mon code à ce pattern.

    Pour vous donner de la matière à juger, voici un exemple du code d'un de mes controleurs et de sa vue correspondante.

    Controleur :
    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
     
    <?php
    //Configuration file
    require_once 'config.php';
    //head
    require_once 'header.php';
    ?>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript"  src="<?php print JSPATH; ?>/jquery.colorbox.js"></script>
    </head>
     
    <body>
    <div id="wrapper">
     
    <div id="header"><?php
    //Menu
    require_once 'top.php';
    ?></div>
    <?php
    //Class instanciation
    $portfolio = new portfolio($dbLink);
    //If portfolioId defined, display matching portfolio
    if(isset($_GET['portfolioId']))
    {
    	$portfolioRessource = $portfolio->getSinglePortfolio($_GET);
    	$portfolioElementsRessource = $portfolio->getPortfolioFiles($_GET);
    	require_once 'portfolioview.php';
    }
    else // Otherwise, display all portfolios
    {
    	$portfolioRessource = $portfolio->getPortfolios();
    	$portfoliosFirstPicsRessource = $portfolio->getPortfoliosFirstPic();
    	require_once 'portfoliosview.php';
    }
    ?></div>
    <div style="clear: both;">&nbsp;</div>
    <div id="footer"><?php
    //Website's footer
    require_once 'footer.php';
    ?></div>
     
    </body>
    </html>
    Comme vous pouvez le constater mon contrôleur est en réalité la page qui est appelé lors du clic sur un lien.


    Ensuite la vue :
    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
     
    <div id="main">
    <div id="portfolio">
    Portfolios
    <table id="portfolios-chart">
    	<tr>
    	<?php
    	$nbPortfolios = $portfolioRessource->rowCount();
    $portfoliosFirstPicsArray = $portfoliosFirstPicsRessource->fetchAll();
    	for($i=1; $i<=$nbPortfolios; $i++)
    	{
    		$portfolioArray = $portfolioRessource->fetch();
    		$rowId = jb::bidimensionnalArraySearch($portfoliosFirstPicsArray, $portfolioArray['id']);
    		print '<td id = "portfolio-square'.($i).'" style = "background: url(\'portfolios/'.$portfolioArray['portfolioFolder'].'/thumbs/thumb-'.$portfoliosFirstPicsArray[$rowId]['filename'].'\') no-repeat center; width: 200px; height: 200px; max-width: 200px; max-height: 200px;"><a href = "portfolio.php?portfolioId='.$portfolioArray['id'].'" style="display:block;width:100%;height:100%;"><p class = "portfolioTitle'.($i).'">'.$portfolioArray['portfolioTitle'].'</p></a></td>';
     
    		if((($i%3)==0))
    		{
    			print '</tr><tr>';
    		}
    	}
     
    	?>
     
    </table>
    <script type="text/javascript">
    <?php 
    for($i=1; $i<=$nbPortfolios; $i++)
    {
    			print "
    $('.portfolioTitle".($i)."').hide();
    
    $('#portfolio-square".($i)."').mouseenter(function() {
    if($('#portfolio-square".($i)."').queue().length == 0)
    {
        $('#portfolio-square".($i)."').fadeTo('slow', 0.5);
            $('.portfolioTitle".($i)."').show('slow', 'linear');  
            }
    	});
    	
    $('#portfolio-square".($i)."').mouseleave(function() {
    if($('#portfolio-square".($i)."').queue().length < 2)
    {
        $('#portfolio-square".($i)."').fadeTo('slow', 1);
            $('.portfolioTitle".($i)."').hide('slow', 'linear', function() {
            $('.portfolioTitle".($i)."').clearQueue();});
            }
    	}); ";
     
     
    }
    ?>
    </script></div>
    </div>
    <div id="sidebar"><?php
    require_once("sidebar.php");
    ?></div>
    Cette vue affiche tous les portfolios.

    Pour ce qui est du modèle, il s'agit en réalité de classes métiers qui accèdent à la base de données entre autres.

    Est ce que mon approche du MVC est correcte ? Ou dois je corriger des choses ?
    Si oui lesquels ?

    Merci.

    Cordialement,

    J.BENOIT

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Ce n'est pas une application du patron MVC.
    On peut remarquer dans ton contrôleur du code HMTL.

    Le moyen le plus basique de faire du MVC est la suivante :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /* Contrôleur */
    $html = '';
    // des traitements ....
    if( condition ... )
      $html .= '<a href="index.php">Accueil</a>';
    // des traitements
     
    /* Vue */
    echo '<html>';
    echo '<body>';
    echo $html;
    echo '</body>';
    echo '</html>';

    En gros le contrôleur ne fait aucun affichage, il ne fait que du traitement et prépare du contenu à envoyer à la Vue.

    Un petit peu de lecture : http://julien-pauli.developpez.com/t...vc-controleur/

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour cette réponse.
    La méthode que tu me propose est tout à fait compréhensible.
    Encore une question, le fait que j'ai mes classes métiers dans mon modèle correspond t'il bien à une architecture MVC ?

    Merci.

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Oui tes class métiers peuvent être comparable à des modèles.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour ton aide, je pense que je vais me tourner vers le guide de Julien Pauli que tu m'as envoyé, mais également je vais travailler avec symfony plus tôt que prévu.
    Résolu !

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

Discussions similaires

  1. [Pattern][Regex] vérifier que mon email est valide
    Par anitshka dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 23/05/2011, 13h03
  2. [Sécurité] Mon accès est-il bien sécurisé ?
    Par Tchupacabra dans le forum Langage
    Réponses: 6
    Dernier message: 29/05/2007, 11h59
  3. Réponses: 36
    Dernier message: 26/03/2007, 20h00
  4. [CF][C#]Comment déterminer si mon PPC est bien connecté?
    Par royrremi dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 07/03/2006, 15h35

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