human
Développement de logiciels MVC Comment ça marche ? ? Quels sont les avantages et inconvénients relatifs de cette architecture par rapport aux autres ? ? Quels sont quelques exemples décents d'open-source ? ? Explique comme si j'avais cinq ans.
gpt
Pas exactement ELI5 mais je ferai de mon mieux pour m'y essayer avec un pseudo-code. Je viens d'un angle Laravel/PHP. Modèle : Articles ; Contrôleur : ItemController ; Vue : Boutiques La vue Boutiques n'est qu'un modèle faute de meilleur terme. Fondamentalement, nous avons une page où nous allons cracher les données d'un enregistrement dans notre inventaire imaginaire. La page aura un $title et un tableau $data. Nous obtiendrons nos données de la base de données avec un modèle appelé Items . Considérez cela comme une classe qui gère toutes les interactions avec la base de données et supprime l'implémentation SQL. Notre contrôleur intitulé ItemController gérera toute la logique métier. Si $ title = Acme Co. < title > { { $ title } } < /title > = < title > Acme Co. < /title > Nous devons maintenant afficher l' élément dans la vue , n'est - ce pas ? Pour simplifier, nous n'aurons que deux choses dans notre tableau $data. $ data['price ' ] et $ data['item_name ' ] . le prix sera de 20,00 $ et le nom de l'article sera RC Car . Fantaisie . Notre vue est donc une page html très simple avec un titre et un tableau. < title > { { $ title } } < /title > < table > < tr > < td > Nom du produit < /td > < td > { { $ data['item_name ' ] } } < /td > < /tr > < tr > < td > Price < d > < td > { { $ data['price ' ] } } < /td > < /tr > Nous avons maintenant la même chose mais analysée : < table > < tr > < td > Nom du produit < /td > < td > Voiture RC < /td > < /tr > < tr > < td > Prix < d > < td > 20,00 $ < /td > < /tr > Maintenant, imaginez si $ data en avait plusieurs autres les index. Nous avons une vue à laquelle nous transmettons ces données. Mais comment obtient-on les données ? Le modèle, non ? Eh bien, oui et non. Donc un peu bref ; lier la logique métier à votre vue ( la jolie ) crée un gâchis . C'est comme mettre tout dans un mixeur pour une boisson et ne pas mettre le couvercle. Quand c'est fait, vous le faites pivoter pour vraiment tout avoir partout. Maintenant . Le contrôleur gère cet appairage. Nous avons des choses appelées routes , nous allons donc dire à l'application (site Web) de pointer vers le ItemController lorsque la page est demandée. Par exemple, Route::get('item/{id } ' , ' InventoryController@show ) ; Alors, qu'est-ce que ça fait ? Simple, vraiment. Dans notre classe InventoryController, nous avons une méthode appelée show . Tout ce que nous faisons est de dire quand l'item est demandé allez ici s'il y a un paramètre ({i d}). Alors disons que notre voiture RC ci-dessus avait un i d de 0 . Nous irions à : URL_0 et l'exemple ci-dessus serait rendu. L'heure du contrôleur ! InventoryController extend Controller { public function show($id ) { //L'élément est dans notre auto load . Cette classe est accessible à l'échelle de l'application. $ data = Item::where('id ' , ' = ' , $ i d ) ; $ title = " Affichage des détails pour " . data['item_name ' ] ; // La vue est dans le même bateau . Chargé automatiquement. return View::make('itempage.view.php ' , $ title)- > with("data " , $ data ) ; } } Tout cela renvoie la vue ci-dessus, comme avant. Mais maintenant , nous allons le pimenter ! Nous avons un autre produit. je ré = 1 ; item_name = " Bateau RC " ; prix = " 25,00 $ " ; Quand on appelle URL_1 devinez quoi ! Notre application renseigne automatiquement les informations de l'article correspondant à l'i d de 1 . Fantaisie ! Retour à la tentative ELI5 : Livres et pochoirs à colorier automatiques = MVC. ( en quelque sorte ) . La réutilisation de code (stencils) est considérée, pour une bonne raison, comme le signe d'un développeur capable. Nous pouvons réutiliser les mêmes fichiers en ne passant qu'un paramètre pour modifier le résultat. Lorsque nous avons appelé la page pour la première fois, nous avions un i d de 0 . La voiture RC a été retournée. Ensuite, nous avons simplement changé l'URL pour avoir un 1 qui renvoyait le RC Boat . Mêmes fichiers page différente . Dans un exemple concret, nous aurions probablement une page maître (livre de coloriage) qui servirait de modèle principal pour toutes les pages. Cela aurait notre CSS , JS et d' autres éléments tous situés de manière centralisée . MVC signifie que vous n'avez plus besoin de mettre à jour vos pages individuellement pour modifier quelque chose comme votre navigation ou votre en-tête. Tout est au même endroit. Cela signifie qu'il n'est pas nécessaire d'avoir une mauvaise interaction avec la base de données éclaboussé partout dans vos fichiers php. Tout cela est géré dans votre objet de base de données. C'est un concept central. Gestion et maintenance centralisées du code . Je ne pense pas avoir tout à fait touché le clou ELI5 sur la tête, mais j'espère que cela aidera tous ceux qui pourraient être confus. Je sais qu'il m'a fallu un peu de temps pour comprendre ce truc MVC.