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.
Aquí hay algunos tutoriales que no son específicos del marco:
- Principios de MVC para desarrolladores de PHP
- El patrón de diseño MVC
- Presentación optimizada de contenido XML
- El patrón de diseño Model-View-Controller (MVC) para PHP
- XSLT en MVC
- Cuando MVC se convierte en una carga para XForms
- Avanzando - nace betterFORM 6 aka ''Fore'' | mejorFORM
- Coldfusion MX y Fusebox
- Steven Nelson en Fusebox solo CFC
- Desarrollo de tres niveles con PHP 5
- Cómo usar Python en la Web
- Usar MySQL para detener la edición de páginas web
- El marco sin marco MVC de PHP
- Más allá de MVC
- La evolución de MVC
- La diferencia entre model-view-viewmodel y otros patrones de presentación separados
- Firebug Internals
- Firebug Internals II. - Representación de objetos unificados
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.
Compruebe el MVC Non-OO en el sitio del gato esponjoso
Con mucho, el mejor tutorial de MVC que he visto en mi vida: http://www.youtube.com/watch?v=Aw28-krO7ZM (Parte 1, ¡no te pierdas las otras partes!), El código se puede encontrar aquí: http://jream.com/lab/open-source
Un tipo muy simpático con un sentimiento de cómo enseñar cosas.
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!
Para cualquiera que se encuentre con esto en una búsqueda, hay un excelente tutorial para principiantes sobre PHP MVC en SitePoint.
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.
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.
Vea esta descripción, ejemplo y diagrama que cubre los conceptos básicos de MVC .
MVC es una gran configuración para diseños simples, pero a menudo se confunde con PAC que es similar y un mayor desarrollo en MVC. Ambas configuraciones son geniales, los dos enlaces brindan información para ayudarlos a ser comprensibles.