w3schools property img attribute php model-view-controller sample no-framework

php - property - ¿Tutorial de MVC que no depende de un marco?



title attribute in html (16)

Quiero aprender MVC "patrón de arquitectura" pero no quiero saltar a un marco como Rails o Django todavía. Primero quiero entender el concepto y escribir un código simple en mi entorno actual, que es PHP / HTML / CSS / MySQL. No necesariamente necesito un tutorial basado en PHP, ya que entiendo muchos idiomas diferentes. Y no quiero tener que instalar ningún marco o API o biblioteca. Solo quiero aprender a pensar en MVC y aplicarlo a mis proyectos. ¿Alguna sugerencia?


Este tutorial lo llevará desde el principio hasta el final de la construcción de un marco MVC. El objetivo no es solo producir el framework MVC terminado, aunque eso sucederá, sino demostrar cómo funciona MVC y algunos de los conceptos subyacentes.


Además de la respuesta de Sander, diría que la mayoría de los marcos confunden el controlador frontal y MVC . En realidad, son dos conceptos completamente separados, pero a menudo ambos están presentes en los marcos. Así que ten cuidado con eso.



Casi todos los frameworks hacen MVC de manera diferente, por lo que puede terminar aún más confundido. Los principios generales de MVC son muy simples: "El modelo es estado; la vista reacciona al modelo; el controlador reacciona para ver; el controlador cambia de modelo". El modelo, la vista y el controlador son conceptos, son lo que sea que sientan que son. Clases, grupos de clases, instancias de clases con archivos de configuración XML, lo que sea.

De hecho, creo que eso cubre los principios básicos. Sin un marco, no llegarías mucho más lejos. Lo que importa es cómo un marco particular define modelo, vista y controlador y sus interacciones.




La principal ventaja de MVC es la separación de las preocupaciones. Cuando escribes código, y si no tienes cuidado, puede convertirse en un gran desastre. Así que saber cómo colocar Modelos, Vistas y Controladores en diferentes "silos" le ahorra tiempo a largo plazo. Cualquier estrategia es buena.

Entonces aquí está el mío

  • Los modelos son archivos encontrados bajo / lib en el árbol del proyecto
  • las vistas son archivos que terminan en .html en el árbol del proyecto
  • los controladores son urls en los atributos de acción <form>

MVC simplemente está dividiendo su código en un Modelo, que trata con los datos, una Vista que muestra los datos, y un Controlador que transfiere datos del Modelo a la Vista.

No es nada para lo que necesites una API o framework, es solo una manera de dividir tu código. La razón por la que muchos frameworks lo utilizan es porque es un concepto muy simple, funciona bien para muchas cosas (se adapta perfectamente a las páginas web) y es bastante flexible (por ejemplo, con Rails, puede hacer todo lo que esté a su vista, o modelo / controlador , si así lo deseaste ...)

Un ejemplo rápido en python, de un script de Python estructurado MVC de ejemplo. No necesariamente "mejores prácticas", pero funciona, y es bastante simple:

class Model: def get_post(self, id): # Would query database, perhaps return {"title": "A test", "body": "An example.."} class Controller: def __init__(self): self.model = Model() self.view = View() def main(self): post = self.model.get_post(1) self.view.display(post) class View: def display(self, item): print "<h1>%(title)s</h1>/n%(body)s" % item c = Controller() c.main()


No entendí el patrón MCV hasta que lo intenté. Si está familiarizado con PHP puede probar http://cakephp.org , es un framework PHP que utiliza la mayoría de los paradigmas RoR.


No me pregunten cómo, pero me encontré con esta entrada de una excelente wiki sobre el tema de los patrones de diseño:

http://www.c2.com/cgi-bin/wiki?ModelViewController

Mucha discusión interesante y consejos para diversos recursos.

¡Y solo tardé seis días en encontrarlo!



Prueba este excelente artículo: el framework PHP MVC sin marco . No es un sustituto de una introducción al patrón MVC, pero proporciona ejemplos simples y prácticos.


Puedes probar este tutorial PHP MVC . Está bien escrito, es muy ligero, contiene solo lo esencial y puedes encontrar el código en sourceforge.


Sé que es tarde pero estoy seguro de que la gente vendrá más tarde con la misma pregunta.

Creo que el buen ejemplo de código anterior está mejor puesto así, pero YMMV:

#!/usr/bin/python class Model: def get_post(self): return {"title":"A test","body":"An example.."} class View: def display(self,items): print ''Title:'',items[''title''],''/n''+''Body:'',items[''body''] class Controller: def __init__(self): self.model=Model() self.view=View() def main(self): post=self.model.get_post() self.view.display(post) mvc=Controller() mvc.main()

Aquí hay otro ejemplo usando herencia que puede ser muy útil en python / php .....

#!/usr/bin/python3 class Control: def find(self,user): return self._look(user) def _look(self,user): if user in self.users: return self.users[user] else: return ''The data class ({}) has no {}''.format(self.userName(),user) def userName(self): return self.__class__.__name__.lower() class Model(Control): users=dict(one=''Bob'',two=''Michael'',three=''Dave'') class View(): def user(self,users): print(users.find(''two'')) def main(): users=Model() find=View() print(''--> The user two/'s "real name" is:/n'') find.user(users) if __name__=="__main__": main()

Si esto tiene sentido, ve a django ahora tu listo. Simplemente lea el libro gratis si tiene sentido, lo examinará rápidamente. Sin embargo, es cierto que debe ser capaz de conocer los paradigmas de OOP y MVC antes de usar django, ya que está construido y utilizado a través de estos paradigmas.

Como puede ver, no es complejo, es solo una de las muchas formas de mantener el código en orden.

Esto explica MVC en django


Uno de los recursos más interesantes son los documentos originales de Trygve Reenskaug. Wikipedia también tiene mucha información independiente del lenguaje en MVC.