PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

32 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Noticias PHP-Hispano / Artículo: Creando un MVC con PHP

Artículo: Creando un MVC con PHP

por Zubyc 10 oct 09 4536 lecturas 15 comentarios

Noticias anteriores

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!

Comentarios (15)

Avatar de davidesper #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. ;)
Avatar de davidesper #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.
Avatar de Irozga #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.
Avatar de davidesper #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. ;)
Avatar de alrik #5 alrik
11 oct 09
Interesante. Voy a leerlo con calma.
Avatar de mmgarcia #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
Avatar de davidesper #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. ¬¬
Avatar de davidesper #8 davidesper
11 oct 09
Hola,

Mi comentario quedó todo en negrita, pero, por un error, ¿eh? Que conste en acta. :)
Avatar de Eloy8857 #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.
Avatar de davidesper #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. ;)
Avatar de ziRuz #11 ziRuz
19 oct 09
¡¡Buenísimo!!
Avatar de dafevi #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.
Avatar de destor77 #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
Avatar de Eloy8857 #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&param=$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&param=$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.
Avatar de avali2 #15 avali2
21h 14min
Excelente me ha venido el artículo cómo anillo al debo.

gracias
Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

php-hispano.net 2002 - 2010 | XHTML 1.0
Datos Legales | Webmaster