Engine · MVC lite
Esto es algo que estoy trabajando en ratitos libres, la criatura se llama Engine y es un patrón MVC escrito en php para personas que buscan algo intermedio, no buscan el potencial de cake o zend sino algo que cumpla la función MVC de una forma básica.
[1]: /images/engine.gif ()
![engine][1]
Muchas veces para montar un miniproyecto no necesitamos algo tan grande sino uno que cubra nuestras necesidades. Soy de esas personas que prefieren usar cosas intermedias porque creo que cumplen mucho mejor y son mas agradables para gente que no son programadores expertos.
Engine es muy sencillo, tan sencillo que asusta, tienes un archivo para configurar la base de datos y no te preocupes sino usas mysql, solo da error si utilizas los modelos.
Los controladores usan un sistema de routing por convención, es decir, dependiendo del nombre del método se usara una ruta u otra.
/controlador/action/id.formato o /controlador/id/action.formato
Varios ejemplos, por defecto el nombre simple se lo traga todo.
//ruta: /controlador/post/
function post() {}
//ruta: /controlador/10/post
function post_numeric() {}
//ruta: /controlador/post/10..rss
function post_rss() {}
//ruta: /controlador/10/post.rss
function post_numeric_rss() {}
El formato por defecto es php, lo suyo es buscar la combinación perfecta.
Los modelos tienen un sistema de cache interno, guarda las consulta en archivos de texto para no tener que hacer peticiones constantemente.
//sin cache
$post = new Post;
$content = $post->find($id);
//con cache, cada 10 minutos
$post = new Post(10);
$content = $post->find($id);
Las vistas son fáciles, tienes que retornar una cadena o un array con las vistas que quieras cargar, el se encarga de buscarlas y de añadirle la extensión. Y si quieres no retornas nada en la función y la vista será la del nombre del método.
class PostController extends APPController {
var $models = array('post');
function edit_html() {
global $content;
$id = url(0);
$post = new Post(10);
$content = $post->find($id);
return view('default/header','edit','footer');
}
}
Algunas características están tomadas de otros frameworks, es lógico, son de lo mejor.
Hay mas cosas que puedo contar pero aun las tengo a medias, por supuesto sin documentar :S
Ver post
Comentar
Hermann#1 hace 335 días
Tiene buena pinta, código? :-P
Hanok#2 hace 335 días
Tienes razón, CakePHP y similares son frameworks estupendos, pero en aplicaciones pequeñas no merece la pena usarlos. Estabamos esperando algo así!!
IceBeat#3 hace 335 días
Pues tengo creado un proyecto en google code, tengo que modificar algunas cosas que las tengo en el aire y lo subo en unos dias.
Por lo menos lo más basico.
kus#4 hace 335 días
is available to download now?
And what about Code Igniter? ..
Hector#5 hace 335 días
Wow, muy bien, ya tengo ganas de ponerle mis pecaminosas manos encima, 4 o 5 ??
Luis#6 hace 335 días
En lo personal me encanta encontrar que la gente se esfuerza por crear, nada nos enriquece mas.
Me parece apropiado tu punto de la sencillez. Nada mas trata, como consejo, en un futuro, si lo sigues, separar por completo el HTML. Puede ser con PatTemplate o algo asi. La mayoria de frameworks de PHP cometen esa falta :S
Igual, excelente.
Saludos desde Costa Rica!
Hector#7 hace 335 días
lo de 4 o 5, me referia a la versión de PHP ... en que versión estas programando ??
Diego#8 hace 335 días
Tiene muy buena pinta! Estas usando Active Record?
Prashant#9 hace 335 días
Supongo que esta versión también funcionara con PHP y 5 a la misma vez no? Y la documentación, va ser disponible en español e ingles o solo uno de ellos?
Algo que deberías incluir es scaffolding, todo el mundo usa esta función cuando están en la fase de desarrollo de una aplicación.
El proyecto este suena muy interesante!
IceBeat#10 hace 335 días
@kus soon :P
@Hector Pues esta escrito en PHP 4, aun no me defiendo bien con las clases en PHP 5.
@Luis No lo tenia pensado usar templates, soy de los que piensa que aprenderse cuatro o cinco cosas de PHP es lo mismo que aprenderse tags especificos en templates.
@Diego Si :), un poco inspirado de cake, que mola un monton.
@Prashant Es que no tengo nada de documentación jejeje :S, un grave error por mi parte.
Si le meto scaffolding ya estaria complicando el tema un poco, no quiero que tenga de todo, sino lo necesario.
Isaac bordons#11 hace 332 días
Enhorabuena! @Prashant: Yo no estoy de acuerdo con que el scaffolding sea determinante en un framework. Es solo una opinión personal, yo no lo uso nunca. :)
Estoy con kus, codeigniter para mi es la mejor opción que he podido testear. Y sobretodo la más lógica y simple.
Recomiendo a todo los PHPeros que le echen un vistazo!
De todas formas supongo que no hay nada como hacerte tu propio framework para que se adapte totalmente a tu forma de trabajo.
Salú!
IceBeat#12 hace 331 días
@Isaac bordons le echare un vistazo e investigare sus entrañas jeje.
A mi me viene fenomenal, tengo una base que controlo al 100%.
Tambien consigo aprender y experimentar, no es reinventar la rueda sino ver como funciona la rueda :).
Ricieri Garcez Rosa#13 hace 320 días
Muy bien, es parecido con PICORA (http://livepipe.net/projects/picora/), "Micro Framework".
IceBeat#14 hace 319 días
@Ricieri Garcez Rosa vaya que curioso, en un mismo archivos tiene hasta routing y todo.
Gracias por el enlae Ricieri.