18 votes

Comment faire du MVC en php sans utiliser de framework ?

J'ai quelques connaissances (de base peut-être) du modèle Modèle-Vue-Contrôleur et je veux créer un site en l'utilisant. Mais je trouve un peu confus la façon de le mettre en œuvre. Je suis bloqué dans les détails.

Disons que j'ai un site où chaque utilisateur conserve des listes de tâches à accomplir. Quelle serait votre approche ? Quelles classes créeriez-vous ? Quelle classe produirait le HTML, quelle classe servirait de contrôleur et comment communiquerait-elle avec la vue pour produire la sortie ? etc.

Désolé si cela semble idiot et je suppose que cela doit être assez facile mais je suis bloqué.

14voto

magallanes Points 1024

Pour mémoire :

Il n'est pas aussi difficile de faire un MVC en PHP, c'est plus lié à la discipline qu'à la difficulté de la tâche.

a) Modèle(s) (facultatif, vous pouvez utiliser un tableau en PHP)

<?php
     class MyModel() {
     }
?>

b) Route (index.php ?)

<?php
include "...";
// here we collects all the information, such post,get and path values
$action=...;
$param=....;
switch($controller) {
      case "my": // www.myweb.com/my/action
      include "controller\MyController.php"; // open the right controller.
      break;
}
?>

c) Contrôleur

<?php
include "model\MyModel.php";
switch($action) {
    case "add":
         // here live the logic, information, call for services and such.
         $model=....;
         // and finally...
         include "view\MyView.php";
         break;
}
?>

d) Vue

<html>
    <body>
       <?=$model->field;?>
    </body>

<html>

A titre d'information :

a) La vue doit être aussi propre que possible. Pensez que la vue pourrait être créée par un web designer qui ne se soucie pas de php.

b) La vue est toujours la dernière étape du processus. Le web view ne renvoie jamais rien.

9voto

TJHeuvel Points 7364

Il est tout à fait possible de le faire sans cadre existant, en créant simplement le vôtre. Ce n'est pas une tâche très difficile de toute façon.

Sans être spécifique à une application, votre cadre MVC devrait faire ce qui suit :

  1. Rediriger tout le trafic vers une page centrale, de façon à ce que chaque requête soit correctement.
  2. Extraire le contrôleur et l'action de l'url de la requête. (par exemple, une requête à http://yoursite.com/Task/Add vous devez traduire cela dans la méthode Add du TaskController).
  3. Chargez la classe du contrôleur (dans notre exemple TaskController). Peut-être en utilisant Autoload.
  4. Appelez la méthode Add sur le contrôleur
  5. Montrer le résultat

Il y a plusieurs façons d'implémenter les vues, vous pouvez émuler l'ASPMVC et faire en sorte que chaque action du contrôleur renvoie un fichier de type ActionResult qui a une méthode Execute. Puis une surcharge de celle-ci, ViewResult se chargerait de charger la vue correcte et de l'inclure avec la bonne ModelData .

7voto

shikhar Points 1643

Voici la réponse précise à votre question de la part de RASMUS LERDORF lui-même. Lire jusqu'au bout .

3voto

rlib Points 788

Lisez l'introduction suivante au réseau Symphony : http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html

2voto

Chris Laplante Points 18060

Bien que votre question soit un peu trop vaste, je pense pouvoir vous aider.

La question numéro un que je me posais lorsque j'ai commencé à utiliser des cadres était la suivante : Quel framework, le cas échéant, dois-je utiliser ? Dans votre cas, je n'essaierais pas de construire un site Web MVC sans un framework préétabli. La plupart de l'architecture que vous finirez par écrire a déjà été réalisée des dizaines de fois.

Les choses comme l'abstraction des bases de données, les systèmes de connexion, etc. sont ennuyeuses à écrire. Autant utiliser un framework qui possède déjà ces choses.

Je recommande vivement ce livre : http://www.amazon.com/Building-Applications-Symfony-CakePHP-Framework/dp/0470887346/ref=sr_1_2?ie=UTF8&qid=1315227178&sr=8-2 . Il vous guidera dans la création d'un site Web MVC simple à l'aide de trois frameworks MVC PHP différents. À la fin du livre, vous aurez suffisamment d'expérience avec chaque framework pour pouvoir choisir celui que vous préférez.

Sinon, si vous souhaitez écrire votre propre framework afin d'apprendre comment le faire, je vous recommande la réponse de TJHeuvel. Une autre option consiste à lire le code source d'un framework existant afin de voir comment les autres l'ont implémenté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X