¿Dónde puedo encontrar un código PHP de framework MVC de aplicación web simple creado desde cero?

Tuve una entrevista que pedía una muestra de código para demostrar que conocía MVC.

Escriba una aplicación web básica, siguiendo el patrón de diseño Modelo-Vista-Controlador / Modular. Las siguientes URL deberían ser funcionales:

http://www.example.com/index.php?page=showTime

Muestra la hora actual del sistema.

http://www.example.com/index.php?page=showDate

Muestra la fecha actual del sistema.

http://www.example.com/index.php?page=showVersion

Muestra la versión actual de PHP / Java.

Cada página debe estar representada por una clase individual.

Tal vez estaban pidiendo un ejemplo de uso de un MVC, pero decidí escribir un marco MVC mínimo desde cero.

Clases de modelo:

<? php

modelo de interfaz
{
función pública __toString ();
}

clase timeModel implementa Modelo
{
función pública __toString () {
fecha de regreso (‘H: i: s’);
}
}

clase dateModel implementa Modelo
{
función pública __toString () {
fecha de regreso (‘Ymd’);
}
}

clase versionModel implementa Modelo
{
función pública __toString () {
volver phpversion ();
}
}

Ver clases:

<? php

define (VIEWS_HOME, ‘/ home / bill / Sites / karwin / mvc / views’);

Vista de clase abstracta
{
protegido $ viewScript;
protegido $ model = array ();
función pública __construct ()
{
$ this-> viewScript = get_class ($ this);
}
función pública setViewScript ($ script) {
$ this-> viewScript = $ script;
}
función pública addModel ($ key, Model $ model)
{
$ this-> model [$ key] = $ modelo;
}
función pública __set ($ clave, modelo $ modelo)
{
$ this-> addModel ($ clave, $ modelo);
}
función pública __get ($ clave)
{
devuelve $ this-> model [$ key];
}
función pública render ()
{
set_include_path (VIEWS_HOME. PATH_SEPARATOR. get_include_path ());
incluir $ this-> viewScript. ‘. html’;
}
}

clase showTime extiende Vista
{
}

clase showDate extiende la vista
{
}

clase showVersion extiende Vista
{
}

Controlador index.php:

<? php

// asume que el autocargador cargará clases en la primera referencia

$ pageName = $ _GET [‘página’];
$ view = new $ pageName ();

$ view-> time = new timeModel ();
$ view-> date = new dateModel ();
$ view-> version = new versionModel ();

$ vista-> render ();

Ver guiones; cópielos a VIEWS_HOME:

DATE = date?>

TIME = time?>

PHP VERSION = version?>

Todo el código de Quora se puede usar libremente según sus Términos de servicio. Pero agradecería si me acredita si usa o comparte este código.

Todos los marcos PHP como Laravel, Zend, Symphony, Yii, etc. tienen un proyecto básico listo. Este proyecto puede brindarle todos los detalles básicos para comenzar la curva de aprendizaje. Simplemente busque la pestaña Tutoriales en cualquiera de los marcos.

En caso de que esté buscando un marco MVC específico, avíseme y con gusto lo ayudaré.

Hola taufan

Actualmente estoy construyendo un framework PHP; Como la mayoría de los frameworks, está siguiendo el patrón MVC. Todo está construido desde cero, con la excepción de algunas bibliotecas que están integradas en el marco (Symfony Event Dispatching, Redbean ORM y el motor de plantillas Smarty).

Está diseñado específicamente con facilidad de uso y una sintaxis simple de aprender en mente; es un gran marco para comenzar para prototipos rápidos o programadores más nuevos que no han tenido ninguna experiencia previa en el marco.

Puede consultar el código en GitHub: arout / diamondphp e incluso descargarlo y usarlo con fines de prueba / aprendizaje. Simplemente no lo use para un sitio de producción; las pruebas aún están en curso y la documentación está incompleta. Un lanzamiento listo para producción está programado para el 1 de enero.

No dude en enviarme un mensaje con cualquier pregunta o comentario. ¡Gracias!

Silex: el micro-framework PHP es probablemente un buen lugar para comenzar. No está construido desde cero, se basa en componentes Symfony, pero cada uno de los componentes está construido desde cero para que sean fáciles de asimilar.

Git (Construir software mejor, juntos) está lleno de proyectos php.

lumen rápido y pequeño. Es del equipo de Laravel.