PHP (lenguaje de programación): ¿Cómo puedo implementar correctamente MVC en PHP?

No me preocuparía demasiado sobre qué clase actualiza a la otra. Cada marco tiene su propia forma de implementar el patrón MVC y la gente discutirá cuál es el más correcto. Como notó, la separación de responsabilidades es el problema principal.

La vista es más que solo una plantilla. Su trabajo es en realidad preparar una plantilla con datos del modelo. El modelo puede haber pasado sus datos a la vista en sí, o tal vez el controlador actuó como intermediario. De cualquier manera, la vista recibe estos datos, los transforma de alguna manera y se los devuelve al usuario en un formato presentable (por ejemplo, HTML … en cuyo caso una “plantilla” es solo un documento HTML con etiquetas PHP que permiten la vista saber dónde poner los datos).

Mientras tanto, el controlador maneja las solicitudes entrantes y actualiza el modelo en consecuencia (por ejemplo, procesa los datos de usuario GET y POST, prepara los objetos del modelo, llama a los métodos del modelo apropiados, etc.). Una vez que se actualiza el modelo, el controlador puede pasarlo a la vista o permitir que el modelo lo maneje solo. De cualquier manera, el controlador está obteniendo información del usuario, y la vista está presentando información al usuario.

Sin embargo, una aplicación generalmente tiene más de un conjunto de clases de modelo / vista / controlador. La parte difícil es saber qué clases instanciar en primer lugar. Una solución común es usar lo que se llama un “enrutador”. El enrutador es una función que determina qué clases instanciar en función de la URL, ya sea leyendo los parámetros pasados ​​en la propia URL o asignando la URL a alguna lista predefinida de combinaciones de clases.

Recomendaría usar cualquier marco de trabajo de PHP para ello, puede usar YII, LARAVEL, Zend, CodeIginiter, Cakephp, Symfony. Sin embargo, si desea implementar su propio trabajo de campo MVC, debe separar la lógica MVC en su código.

James
Desarrollador de software en http://www.valuecoders.com

“Correctamente” es una palabra fuerte. Puede implementarlo de tal manera que funcione para su aplicación.

Te recomendaría que “te pares en el hombro de los gigantes” y compruebes las implementaciones de lo que ya está allí y funciona bien.
Compruebe el famoso CodeIginiter, WordPress, el marco de Yii, Magento, Joomla, etc.

More Interesting

¿Cómo creo un sitio web personal? ¿Por lo general, están codificados a mano desde cero o utilizan algún tipo de software de construcción de sitios?

Estoy usando GetSiteControl (Obtener widgets para su sitio web) en mi sitio web. ¿Disminuirá la velocidad de mi sitio web? ¿Está bien usar la versión gratuita?

¿Qué tecnología debo aprender junto con MVC?

¿Qué tema debo aprender para convertirme en desarrollador web de PHP y adecuado para trabajos?

Empecé a aprender HTML / CSS / JavaScript por mi cuenta, pero estoy más interesado en otros lenguajes como Python y PHP. ¿Es realista pensar que puedo llegar a algún lugar como Amazon o cualquiera de las otras compañías tecnológicas en el área de Seattle?

Soy desarrollador web, vivo en un país donde ocurren asesinatos a diario. ¿Hay alguna manera de combatir el crimen usando mis habilidades de programador?

Cómo obtener múltiples valores de casillas de verificación de HTML a PHP sin enviar un formulario y sin tener un botón de envío

Quiero codificar mi propio sitio web en HTML5. ¿Dónde empiezo?

Me gustaría desarrollar una aplicación móvil HTML + CSS + JS con un back-end RDBMS (MongoDB es menos adecuado, en este caso). ¿Qué marcos debo usar?

Estoy a la mitad del aprendizaje de Python. ¿Cuándo debería comenzar a jugar con Django?

Soy un estudiante de TI de tercer año, me perdí un poco y quería reiniciar mi vida con programación web o cosas relacionadas con las redes sociales. ¿Cómo debo comenzar?

Solo quiero hacer desarrollo web, así que quiero aprender JS, RoR, etc. Pero la gente sigue diciendo cualquier cosa, pero C es malo. ¿Por qué necesitaría saber C si quiero hacer desarrollo web?

Soy un desarrollador .NET (más reciente, solo 6 meses de experiencia). ¿Cómo empiezo si quiero aprender nuevas tecnologías?

Si aprendo SQL, ¿entendería MS Access? Estoy muy interesado en la gestión de bases de datos. Tengo experiencia previa en desarrollo web.

Tengo un sitio web (http://awomkenneth.com/). Me gustaría hacerlo más popular en Nigeria. ¿Cómo lo logro?