Page 1 sur 1

blog en architecture MCV

Posté : 24 juin 2015, 13:27
par Cyril78
Bonjour tout le monde,

J'ai réalisé un blog en PHP

Maintenant, j'essaie de l'adapter à l'aide de l'architecture MCV.
J'aimerais bien pouvoir me faciliter le travail en CSS en travaillant uniquement sur la page "view".

Si j'ai compris la logique générale du MCV, j'ai beaucoup de peine à transposer mes différentes commandes sur plusieurs pages php, notamment par exemple les paramètres pour la pagination .
Et je n'ai aucune en connaissance PHP orienté objet, si ce n'est les principes de base.

Est-ce que quelqu'un pourrait me conseiller un tutoriel, ou est-ce que quelqu'un connaît bien ce sujet, à réaliser un blog en architecture MCV ?

Merci d'avance de votre aide

Meilleures salutations,

Cyril Bron

Re: blog en architecture MCV

Posté : 24 juin 2015, 23:42
par moogli
salut,

C'est MVC ;)
Le principe du MVC est décrit dans pas mal de tuto au travers le net, il est possible de refaire un bout ici mais redondant.
Il s'agit d'un motif d'architecture logiciel, mais ce n'est pas forcément lié à la POO tu le faire en procédurale.
La POO le permet simplement quand on connait le principe mais ça le fait aussi autrement ;)

Le principe du MVC est de séparer l'appli en trois couche quasi indépendante (elles peuvent fonctionner "sans les autres").
En simplifiant au maximum :
Donc trois couches :
- Le modèle, c'est la partie accès à la base de données, au fichier, bref a toutes sources de données.
- La vue qui affiche les données qu'on lui fournit.
- Le contrôleur qui est le cœur de la chose.

pour afficher un post de ton blog, tu peux avoir une fonction (disons displayOnePost ).
La fonction prend en paramètre les données que tu vas devoir afficher, par exemple, le titre, la date, le corps etc. etc.
Tu va donc avoir autant de paramètre que d'information à afficher. Avec un modèle objet tu passerais un objet juste un objet ...
par exemple
function displayOnePost($titre,$content) {
echo '<h2>',$titre,'</h2>';
echo $content;
}

Le modèle pour avoir le post
function getTileById($id) {
// requete, sgbd ou fichier pour retourner le titre
}
function getContentById($id){
// retourne le contenu correspondant à l'id.
}
en poo une méthode qui te retournerais un objet qui contient le tout.

le contrôleur il s'agit d'une fonciton qui prend en paramètre les "entrants", dans ton cas $_GET / $_POST et qui va utiliser le modèle, pour fournir les données à la vue à afficher.
exemple
// on imagine que pour afficher un post on dans l'url postid
function controler($get, $post) {
if(!empty($get['postid']) {
displayOnePost(getTileById($get['postid']), getContentById($get['postid'])) ;
}
}

ta page oueb
<html>
<head>...</title>

<body>
<?php
controler($_GET,$_POST);
?>
</body>
</html>

ceci est simplifié et explique le principe de ce que tu peux faire en procédurale.
Bien entendus c'est plus complexe, il faut penser au "routage" : comment orienter vers une vue ou un modèle (un modèle ne fait pas que fournir des données il mets à jour la source en y ajoutant, modifiant ou supprimant les données (voir SCRUD). Donc un modèle pourrait être une cible d'un formulaire.
Le choix de la vue est en fonction des paramètres d'url ou du formulaire une combinaison if / else if peux faire la chose mais c'est pas forcément élégant, il préférable d'adapter la chaîne de commandement pour ça ;)

Bref un MVC c'est un modèle et il n'y pas une façon de le faire, à partir du moment ou tu sépares les trois couches tu as ton mvc. Le but est qu'il n'y ai pas de code "métier" dans la vue (en clair pas d'accès base, pas de règle de gestion si elle n'est pas liée à l'affichage).
le contrôleur n'as pas accès aux données directement il les demandes au modèle. Le controleur c'est à qui demander les données mais ne sais d'où elles viennent (SGBD, fichier, service web etc.). A la limite il peux initier une connexion sgbd qu'il fournit au modèle.
La vue n'a pas connaissance du modèle et modèle de la vue leur lien c'est le contrôleur.

Il existe un motif de conception qui fait "causer" modèle et vue : le MVVM.

L'avantage du MVC c'est que tu modifier chaque partie sans impacter les autres (pour peux que les méthodes des fonctions / méthodes ne change pas évidement).

tu veux passer ton ihm de simple html à du html, utiliser extjs, angular ou autre framework graphique pas de problème ça n'impacte que la vue.
Tu changes de base de données, idem seul le modèle change.

Je me répète, mais ma vu, ici, est simpliste. Je te conseil de lire plusieurs tuto sur le principe, de te faire ton opinion et de modifier petit à petit ton blog ;)

@+

Re: blog en architecture MCV

Posté : 07 juil. 2015, 13:27
par Cyril78
Merci beaucoup Moogli pour cette réponse détaillée
effectivement, il n'y pas une manière de faire...
excuse-moi de te répondre que maintenant, j'étais un peu absent ces derniers temps...
A bientôt
Cyril