Inicio / Noticias PHP-Hispano / Artículo: Creando un MVC con PHP
Artículo: Creando un MVC con PHP
Noticias anteriores
- 16 ene 10 Ayuda para Haití
- 16 sep 09 Acuerdo con RedCoruna
- 10 sep 09 Artículo: POO en PHP 5
- 01 sep 09 Encuestas y debates
- 20 ago 09 Últimas actualizaciones en PHP-Hispano
- 09 jul 09 PHP 5.3.0 Released!
- 10 jun 09 Diseño y uso de bases de datos relacionales
Eloy nos envía otro artículo que no puede llegar en un mejor momento ya que está muy relacionado con la temática que hemos estado debatiendo estas dos últimas semanas en PHP-Hispano: la aplicación de frameworks en nuestros desarrollos, aplicando un MVC que nos permita separar la lógica de negocio de la de presentación.
Este artículo explica paso a paso cómo crear un sencillo framework desde cero, basándonos en nuestros conocimientos sobre POO (Programación Orientada a Objetos), también llamada OOP en inglés.
Uno de los puntos interesantes de este artículo es que podéis descargar el código de los ejemplos, para ver cómo funciona, para que hagais vuestras pruebas e incluso para aplicar vuestras modificaciones, y así aprender con todo ello.
Como siempre, os dejamos un enlace al artículo y el índice del mismo:
http://www.php-hispano.net/articulos/modelo-vista-controlador-en-php.html
- Introducción
- Modelo: la base de datos
- Modelo: abstracción de la base de datos
- Modelo: interfaz principal
- Modelo: extensiones
- Vista
- Controlador
- La aplicación
- El main
Saludos!
Este artículo explica paso a paso cómo crear un sencillo framework desde cero, basándonos en nuestros conocimientos sobre POO (Programación Orientada a Objetos), también llamada OOP en inglés.
Uno de los puntos interesantes de este artículo es que podéis descargar el código de los ejemplos, para ver cómo funciona, para que hagais vuestras pruebas e incluso para aplicar vuestras modificaciones, y así aprender con todo ello.
Como siempre, os dejamos un enlace al artículo y el índice del mismo:
http://www.php-hispano.net/articulos/modelo-vista-controlador-en-php.html
- Introducción
- Modelo: la base de datos
- Modelo: abstracción de la base de datos
- Modelo: interfaz principal
- Modelo: extensiones
- Vista
- Controlador
- La aplicación
- El main
Saludos!
Comentarios (15)
|
#1
davidesper 10 oct 09 Hola,
Muy buena y práctica lectura, que, en mi opinión consigue el objetivo que se propone el autor: por lo menos a mí me ha refrescado de manera evidente de qué va el Modelo Vista Controlador y creo que este texto lo tendré presente en un futuro. Así que muchas gracias al autor y enhorabuena. ;) |
|
#2
davidesper 10 oct 09 Hola de nuevo,
Voy a atreverme a meter la pata. Veréis. El archivo "htaccess" que vengo utilizando y que me parece ideal para proporcionar un punto de entrada único a la aplicación, yo lo tomé del proyecto Wordpress, pero, se utiliza en no pocos otros proyectos, y es el siguiente: Options -Indexes AddDefaultCharset utf-8 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php Ahora bien, lo que quiero destacar del archivo son las "condiciones de escritura", pues, se trata de dirigir las peticiones al archivo "index.php", siempre que lo que se solicite no sea ni un archivo ni un directorio realmente existentes. Lo que me preguntaba era si este "htaccess" no puede ser más conveniente que el que se ha presentado en el artículo, incluso teniendo en cuenta que habrá que preveer que se soliciten archivos realmente existentes, pero, que, no queramos que sean usados "por sí solos". Es decir, teniendo esto último en cuenta (cosa que no me parece muy complicada de conseguir), ¿no os parece también a vosotros que este archivo "htaccess" es más sencillo y más conciso? Además que ocupa unos cuantos "bytes" menos, lo que acaso no sea desdeñable puesto que el archivo "htaccess" se requiere a cada petición. No sé. Lo más seguro es que me esté perdiendo algo sobre el archivo "htaccess" que se ha propuesto en el artículo. En todo caso lo dejo ahí por si puede servir a alguien. Y vuelvo a dar las gracias a Eloy. ;) P.D. Nótese que en este archivo "htaccess", por ejemplo, no tenemos cuidado de peticiones a archivos CSS o Javascript, pues, siempre que se trate de archivos realmente existentes, serán retornados sin más por el servidor web. |
|
#3
Irozga 11 oct 09 davidesper, el patrón MVC lo que pretende hacer es separar los datos (Modelo), de la presentación (Vista), y la lógica (Controlador). El objetivo no es el hacer las redirecciones que hace htaccess. Si no me equivoco es hacer una separación que permite facilitar el mantenimiento de la aplicación. No sé si he soltado alguna barbaridad desde mis limitados conocimientos de este patrón, aunque diría que no, pero si lo he hecho decídmelo que así aprendo.
|
|
#4
davidesper 11 oct 09 Pero el "htaccess", en este caso, se utiliza para el punto de entrada de la aplicación, precisamente, algo importante en el MVC, puesto que ha de existir un punto de entrada, un mismo "script", una "función main" como ha expuesto el compañero Eloy. ;)
|
|
#6
mmgarcia 11 oct 09 Hola davidesper .
Corrigo este comentario Pero el "htaccess", en este caso, se utiliza para el punto de entrada de la aplicación, precisamente, algo importante en el MVC, puesto que ha de existir un punto de entrada, un mismo "script", una "función main" como ha expuesto el compañero Eloy. ;) El patron que realiza tal accion es el FrontController. Saludos |
|
#7
davidesper 11 oct 09 Hola,
mmgarcia, pero, igualmente, es el archivo "htaccess" quien dirige al "index.php" que a su vez pone en marcha todo, independientemente de qué se ponga en marcha. De todas formas, releyendo la parte del artículo donde se trata de este asunto, ya no me queda tan claro que lo que se pretenda sea que exista siempre un punto de entrada... que era para lo que yo proponía el "htaccess" de más arriba. ¬¬ |
|
#8
davidesper 11 oct 09 Hola,
Mi comentario quedó todo en negrita, pero, por un error, ¿eh? Que conste en acta. :) |
|
#9
Eloy8857 12 oct 09 En el .htaccess están las reglas para pasar por GET las secciones y parámetros de las secciones.
Pero esto es independiente del MVC; es para dejar las URIs más bonitas y para el posicionamiento. Se puede prescindir completamente de ello y la aplicación funcionaría igual, pero habría que cambiar los links :P Saludos. |
|
#10
davidesper 13 oct 09 Ajá. Si, debería haber releído el artículo. ;) Quiero decir, que, en efecto, el ".htaccess" no parece servir aquí (al menos no sólo) para redirigir a un punto de entrada único en la aplicación. Bueno. De todas formas igual mi comentario de más arriba, comentando las virtudes (que yo veo, igual estoy equivocado) del archivo "htaccess" que he presentado (que no hecho) no haya sido del todo vano.
Sea como sea gracias por tus artículos Eloy. ;) |
|
#12
dafevi 04 nov 09 Si se va a trabajar con MVC, lo mejor sería hacerlo desde un framework, que ya te da una estructura armada y codigo probado y con cierto nivel de seguridad.
|
|
#13
destor77 07 dic 09 muy bueno el articulo, pero tengo una duda, como se podría armar para separar el backend del frontend cosa que quede algo asi:
admin /nombrecontrolador nombrecontrolador.php /template nombretemplate.html core nombredelosarchivosclavesparaelmvc.php website /nombrecontrolador nombrecontrolador.php /template nombretemplate.html salu2 |
|
#14
Eloy8857 09 dic 09 Si te he entendido bien, necesitarías añadir una nueva regla en el .htaccess, por ejemplo:
[php] RewriteRule ^admin/([^/]+)/?$ index.php?section=admin¶m=$2 [L,QSA] [/php] Pero resulta que ya hay una regla que teníamos que nos sirve perfectamente: [php] RewriteRule ^([0-9a-z_-]+)/([^/]+)/?$ index.php?section=$1¶m=$2 [L,QSA] [/php] Luego tendrías el controlador ControllerAdmin.php que puede encargarse de realizar la acción que se le indique en el parámetro $_GET['param'], ya sea con un simple switch, o mediante una fábrica de clases. Para los templates no necesitarías nada especial, aunque si la zona de administración va a usar un esqueleto completo entonces yo modificaría la clase de la aplicación para que detectara si está en la zona admin, y en ese caso se podría cargar un archivo de configuración distinto donde la ruta de plantillas fuese distinta (por ejemplo, templates/admin). Saludos. |
Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano,
:: Registrar ::