Engine · MVC lite en Google Code

Agregar a favoritos

26 Comentarios

Posteado hace 923 días en:

He subido una versión al svn del proyecto para que le echéis un vistazo al código, ya que carece de documentación y así a bote pronto es difícil meterle el diente.

Por ahora trae lo mínimo, falta meterle los helpers y alguna clase para manejar las sesiones y el cacheo.

No seáis crueles con mi código, como dije en el anterior post, busco algo intermedio y sobre todo una base.

La clave del proyecto consiste en personalizarlo y armarle lo que le falta.

Proyecto en Google Code


Engine · MVC lite

Agregar a favoritos

15 Comentarios

Posteado hace 924 días en:

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

Proyecto en Google Code


Manejo de Cookies

Agregar a favoritos

3 Comentarios

Posteado hace 941 días en:

El manejo de cookies por medio de JS y PHP a la vez puede dar problemas sino sabemos ciertos detalles, en mi caso, al intentar crear un cesta, doy la posibilidad de ir sumando objetos por medio de js o por php, pero por arte de magia las cookies creadas no podían ser manipuladas por el server, solo lectura.

El quid de la cuestión es que la cookie debe tener los mismos parámetros de configuración tanto en el cliente como en el server, parece una tontería, pero al principio uno no cae en ella.

Para manipularlas el ´path´y el ´dominio´ deben ser el mismo en ambos lenguajes.

Sobre todo cuidado con ´path´, es el que se encarga de que la cookie se encuentre en todos los directorios o solo en uno, si utilizas htaccess es casi seguro que alguna vez la cookie haya desaparecido.

Os pongo una mini clase para la manipulación de Cookies por PHP, es casi un port de Mootools.

//Modo de uso
//Cookie::set('nombre','valor');

class Cookie {

function set($cookie= '', $value= '', $duration= 31000000, $path= null, $domain= null) {
    setcookie($cookie,$value, time() + $duration, $path, $domain);
    $_COOKIE[$cookie] = $value;
}

function get($cookie= '', $default= '') {
    if (isset($_COOKIE[$cookie])) return $_COOKIE[$cookie];
    if($default) return $default;
    return false;
}

function remove($cookie= '', $path= null, $domain= null) {
    setcookie($cookie, '', time() - 3600, $path, $domain);
    unset($_COOKIE[$cookie]);
}

}

toggle en PHP

Agregar a favoritos

4 Comentarios

Posteado hace 1121 días en:

Una de las cosas que utilizamos muy a menudo cuando desarrollamos es el uso de tablas o listas con clases alternas para mostrar información, con esto conseguimos distinguir con mayor facilidad los datos. Cada persona tiene su maña, algunos usan un true o false.

if($var) {
    $var = false;
    echo 'toggle';
} else {
    $var = true;
    echo 'toggle2';
}

Otros el tanto por ciento para saber si es par o impar.

if(($i + 1) % 2 == 0) echo '';
else echo 'toggle';

Así que he creado una pequeña función para facilitar esta tarea, puedes pasar los dos argumentos o solo el primero, pero si no pasas ninguno lo que haces es resetear para que la próxima vez que la llames empiece por el primer parámetro.

function toggle($one='',$two='') {
static $toggle = false;
$toggle = empty($one) && empty($two) ? true : $toggle;
$toggle = $toggle ? false : true;
return $toggle ? $one : $two;
}

Ejemplos de uso:

//alterna este valor con uno vacío
toggle('class="toggle" ');

//reseteas
toggle(); 

//alterna los dos valores
toggle('toggle','toggle2'); //devuelve toggle
toggle('toggle','toggle2'); //devuelve toggle2
toggle('toggle','toggle2'); //devuelve toggle

Puedes pasar los valores que quieras, la función no depende del valor ya que usa un booleano con una variable estática.


Amazon images

Agregar a favoritos

0 Comentarios

Posteado hace 1205 días en:

Basado en un widget de mac para las carátulas de itunes he creado una función para buscar y obtener información de algún disco o película.

La función devuelve un array con los resultados obtenidos de la búsqueda. Puedes elegir el tamaño de la carátula y la categoría donde buscar.

Ejemplo:


print_r(amazon('coldplay','M', 'Music');

Descargar función