Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2011, 22h08   #1
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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 :
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 :
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
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 08h29   #2
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
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 :
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.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 13h51   #3
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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.
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h00   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
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.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 23h03   #5
Nouveau Membre du Club
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 35
Points : 35
Envoyer un message via MSN à skanner
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 !
skanner est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h24.


 
 
 
 
Partenaires

Hébergement Web