Mostofreddy

Temple: Sistema de Templates para PHP

Comentarios 1 Tags , , , Categorias Programacion

{lang: 'es-419'}

temple sistema de templates para php

Este último tiempo estuve comenzando varios proyectitos, uno de ellos es Temple, un Sistema de Templates para PHP. Por el momento no posee mucha funcionalidad, ni esta documentado pero avanza todas las semanas :) .

La idea Temple es muy sencilla, a partir de un html con claves al estilo {{value}} generar un archivo con codigo PHP para que luego estas claves sean reemplazadas por valores.

Veamos un pequeño ejemplo de su uso:

Tenemos un archivo template: test.html

Buen dia: {{nombre}}

Luego por otro lado tenemos: index.php que es el encargado de instanciar Temple y parsear el html

<?php
include_once 'Temple.php';
include_once 'Parser.php';
include_once 'Cache.php';
$temple = new \Temple\Temple();
$params = array('nombre' => 'Mostofreddy');
$temple->loadView(__DIR__.'/test', $params);

Esto imprimira en pantalla:

Buen dia: Mostofreddy

Como podemos ver su uso es realmente sencillo y facil de integrar en otros sistemas ya realizados.

Existe una serie de configuraciones:

- cache: indica en que carpeta se almacenaran los files procesados
- useCache [true|false]: Indica si se usa el archivo anteriomente procesado o en cada peticion se debe procesar nuevamente
- force: obligatoriamente se procesa el archivo

Lo pueden descargar desde Github

Clip – trabajando desde linea de comando con PHP

Comentarios 2 Tags , , Categorias Programacion

{lang: 'es-419'}

Clip es un nuevo proyecto que estoy comenzando que facilita la creación de script PHP para correrlos desde la shell o línea de comando.

La funcionalidad que esta implementada hasta ahora es la siguiente:

- Recupera los parámetros de entrada del script.
- Identifica el SO que se utiliza y usa los comandos adecuados para cada SO.
- Funcionalidad para imprimir y recuperar datos desde la consola.
- Permite cambiar de color y fondo a los datos que se imprimen en la consola.
- Validación automatica de los parametros de entrada.
- Invocación al método help cuando se usa -h o —help como parámetro.
- Invocación al método version cuando se usa —version como parámetro.

Veamos unos ejemplos de su uso: (el ejemplo completo se puede ver en github)

1) Imprimir la típica ayuda de los scripts de shell cuando ponemos -h o –help

Para esto debemos crear una clase que extienda de \Clip (sisi, usa namespaces de PHP 5.3+)

#!/usr/bin/php
<?php
class Test extends \Clip\Clip
{
    protected $name = '';

    protected function help()
    {
        $this->writer()->write('Esta es la ayuda');
    }
}
$test = new Test();

Luego abrimos una consola y ponemos

> ./test.php -h
> Esta es la ayuda

2) Mostrar la versión de nuestro script

    protected function version()
    {
        $this->writer()->write('Esta es la version');
    }
> ./test.php -version
> Esta es la version

3) Perdir datos al usuario

    public function getName()
    {
        $this->name = $this->writer()->prompt('Escribi tu nombre por favor', null, null, true);
        $this->writer()->newLine();
    }

4) Validar los datos de entrada

Para validar los datos de entrada hay que crear un método que se llame validate que recibe como parametro un objeto del tipo \Clip\ClipOpts. Este objeto tiene 3 atributos:

- short: son las opciones que constan de una sola letra.
- long: son los parámetros del tipo –key o –key=valor.
- input: son los demás parámetros.

Por ejemplo:

    protected function validate(\Clip\ClipOpts $opts)
    {
        if (!in_array('v', $opts->short)) {
            return "Error: Debe agregar la opcion 'v'";
        }
        return true;
    }

Para ver el mensaje de error, usamos el script así

./test.php -t --clave=valor /home/Bart
> Error: Debe agregar la opcion 'v'

En cambio si se invoca de alguna de las siguientes nameras no mostrará el error

./test.php -v --clave=valor /home/Bart
./test.php -vt --clave=valor /home/Bart

Espero que les sea de utilidad!

FlyCore v0.8 + wiki!

Comentarios 0 Tags , , Categorias Programacion

{lang: 'es-419'}

FlyCore estrena la versión 0.8 y wiki!

A pesar del poco tiempo que ultimamente tengo para el blog y mis proyectos, me hice un tiempito para trabajar con FlyCore.

Esta nueva versión no trae feateures nuevos, pero si unas interesantes refactorizaciones que permiten reordenar el core en componentes y realizar mejores test unitarios.

El soporte para la capa de modelos MVC fue retirada porque planeo reescribirla para que este lo mas desacoplada posible de la capa de persistencia.

Además, de a poco estoy armando la wiki del proyecto.