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