Marzo 24, 2008 @ 19:44
Alex Sancho
Tan solo anunciar la disponibilidad de temper, un motor de plantillas para kohanaphp, basado en Using a Stack to Parse HTML with PHP5.
La idea principal del modulo es la de proveer de un lenguaje de plantillas sencillo, intuitivo y seguro.
El modulo sigue las características del framework, por lo que resulta totalmente extensible y aprovecha el sistema de ficheros en cascada.
Sintaxis
Temper soporta varios tipos de sintaxis dentro de las plantillas, para ello usa tres tipos de delimitadores, {}, {{}}, <prefix:tag></prefix:tag>
Variables
- {=variable} se convierte en <?=$variable;?>
- {=variable|funcion} se convierte en <?=funcion($variable);?>
- {foo.variable} representa un objeto o matriz
- {/path/to/} se convierte en
http://example.com/path/to/
- {/path/to/=variable/} se convierte en
http://example.com/path/to/<?=$variable;?>
Funciones
- {{echo({%foo})}} se convierte en <?php echo($foo);?>
- {{class::method({%foo}, ‘arg’, ‘arg’)}} se convierte en <?= calluserfunction_array(array(‘class’,’method’), array(‘arg’,’arg’));?>
Tags
En temper los tags están representados como objetos, lo que nos permite añadir tags personalizados o incluso deshabilitar los que no necesitemos para mejorar el rendimiento del modulo.
La sintaxis de cada etiqueta varia dependiendo de los argumentos que acepta.
Por ejemplo, para incluir un bloque condicional (if elseif else)
<ko:if var="a" eq="a">a
<ko:elseif var="a" eq="b" />b
<ko:elseif var="a" neq="">set
<ko:else />not set</ko:if>
La documentación del modulo aun es algo así como inexistente, pero creo que con los ejemplos que incluye y dando una ojeada al código es suficiente para entender su funcionamiento.
El compromiso para los próximos días es añadir algo de documentación al proyecto y algún ejemplo mas “real”.
Comentarios (2) |
|
Digg It! |
|
ma.gnolia |

Comments Off |
Permalink
|
Via Alex Sancho
PHP
Febrero 5, 2008 @ 8:49
Alex Sancho
Diferenciar el enlace actual dentro de un menú es una tarea relativamente fácil, básicamente solo tenemos que comparar los enlaces del menú con la url actual y añadir una id al enlace en el caso de que coincidan.
La siguiente técnica intenta facilitar este proceso, la idea es procesar un bloque de html mediante php y encontrar la coincidencia,
el menú
como ejemplo usare una lista desordenada para la estructura del menú
$menu = '
<div class="menu-container">
<ul id="menu">
<li><a href="http://example.com/path/seccion1/">Seccion 1</a></li>
<li><a href="http://example.com/path/seccion2/">Seccion 2</a></li>
<li><a href="http://example.com/path/seccion3/">Seccion 3</a></li>
</ul>
</div>';
Como podéis ver, la estructura del menú no presenta ninguna limitación, en este caso utilizo una lista, pero podría utilizar cualquier tipo de contenedor para el propósito.
la función
Creo que el método de uso no tiene secreto, pasamos nuestro menú a la función menu_current($menu);
<?php
funcion menu_current($menu)
{
$lines = split("\n", $menu);
foreach($lines as $line)
{
preg_match('/href="([^"]+)"/', $line, $url);
if (isset($url[1]))
{
$section = end(explode("/", trim(parse_url($url[1], PHP_URL_PATH), '/')));
$request = explode("/", trim($_SERVER["REQUEST_URI"], '/'));
if(in_array($section, $request))
$line = str_replace('<a h', '<a id="current" h', $line);
}
$array[] = $line;
}
echo implode("\n", $array);
}
?>
Comentarios (0) |
|
Digg It! |
|
ma.gnolia |

Comments Off |
Permalink
|
Via Alex Sancho
PHP
Noviembre 9, 2007 @ 14:21
Alex Sancho
Siempre es una buena practica el controlar los tiempos de ejecución de nuestros scripts a medida que vamos avanzando en el proceso de programación.
Y que mejor manera de hacerlo que desde las propias entrañas del interprete.
En el caso de PHP, dispone de varias extensiones que se encargan de este cometido, dos de ellas son xdebug y APD (Advanced PHP Debugger).
Personalmente no he utilizado APD, puesto que aunque no me da ningún error de compilación no he sido capaz de obtener resultado alguno. En cambio xdebug presenta un informe totalmente detallado de la ejecución del script.
Aunque ninguna de ellas es parte integral del interprete, su instalación y funcionamiento es muy sencillo. Por ejemplo, para instalar xdebug,
pecl install xdebug
- añadimos al php.ini las siguientes lineas
zend_extension="/ruta/al/modulo/xdebug.so"
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "/tmp"
Finalmente, para poder leer los informes, necesitamos algún programa que soporte el formato cachegrind, en linux tenemos kcachegrind, supongo que para el resto de SO existen soluciones similares.
Comentarios (1) |
|
Digg It! |
|
ma.gnolia |

Comments Off |
Permalink
|
Via Alex Sancho
PHP