2011-06-25

ThinPHP es otro Framework para PHP muy ligero menos de 50 KB comprimido

Thin PHP Framework (TPF)

ThinPHP es una fuente ligera, abierta, flexible PHP5 framework MVC. Su objetivo es ser un marco rápido, sencillo y muy extensible. Está diseñado para permitir RAD (Rapid Application Development), ayudará a poner en marcha su proyecto, empezar a codificar sus ideas en cuestión de minutos con la curva de aprendizaje mínima.
Thin marco PHP es adecuado para los desarrolladores web que quieren un marco sólido para iniciar sus proyectos, pero no quieren demasiadas dependencias. El código fuente está disponible para su descarga, es fácil de leer y ampliar.

Primeros pasos

Thin marco PHP es pequeño (menos de 50 KB comprimido), tiene menos clases que otras estructuras y de las bibliotecas independientes (excluidos núcleo vista lib - Smarty). Incorpora un montón de características útiles y mejores prácticas para ayudarle en el proceso de desarrollo web.

Características:

  • MVC (Model-View-Controller), OOP
  • RAD: download, unzip and start coding your ideas
  • URL routing to the controllers
  • Multi languages, i18n support
  • Log messages
  • Extension (plugin) system
  • Auto generate code (DB tables to VO (value object) classes)
  • Code is optimized: cache URI routes, minify js, css files, etc.
  • OAuth signin using: Google, Facebook, Twitter, etc.

Soporta:

  • Data-access layer: PDO (Mysql, SQLite...)
  • View layer (Template engine): Smarty - puede cambiar a usar su buscador favorito.
  • Caching: APC, Memcache
  • Apache, nginx
  • jQuery

Más:

  • Easy to apply the framework to most Website Templates
  • Validar al instante (ajax), both client side and server side
  • Sanitize input data
  • Anti flooding
  • Minify, compress and cache js, css files
  • Prevent form resubmission, remote Post... with form token
  • Cambiar de vista diferentes para: themes, languages...
  • Built-in extensions: authentication, captcha, twitter, editor, wiki, code highlighter
  • Authentication extension supports OAuth signin using: Google, Facebook, Twitter...
Link al sitio oficial deThinPHP

    Rain.TPL Template Engines otra alternativa super rapída Vs Smarty Vs Twig

    Rain.TPL es otro motor de template muy simple con funciones mínimas que lo hace muy rápido bajando la brecha entre PHP puro y un motor de plantillas como Smarty.net o Twig que esta el momento este ultimo era unos de los mas rápido y pequeños y llego de la mano de la gente que desarrolla Symfony.

    RainTPL

    RainTPL es un código abierto motor de plantillas PHP, que carga precompilada plantillas PHP:
    • Fácil, 8 tags, 3 métodos, 1 sola clase en 1 solo archivo php
    • Rápido, la carga de plantillas precompiladas
    • Útiles, se divide la lógica de diseño
    • WYSIWYG, el diseño de HTML con img / css con rutas relativas, la lluvia va a sustituir a la ruta correcta
    • Dispone de Cache


    Instalación

    Downloadhow RainTPL copia, el rain.tpl.class.php archivo en su proyecto de incluir el directorio inc /, cree un directorio de plantillas tpl /, y un directorio tmp cache /.


    Incluir y configurar

    include "inc/rain.tpl.class.php"; //include Rain TPL
    raintpl::$tpl_dir = "tpl/"; // template directory
    raintpl::$cache_dir = "tmp/"; // cache directory

    Tags

    Aquí las etiquetas que necesita



    {$Variable_name}

    Las variables son los contenidos dinámicos de las plantillas, se pueden asignar a assign () método. Las variables son case_sensitive.

    My age is {$age}  // 30

    Usted puede hacer operaciones simples tales como - * /% con los números, cadenas y otras variables, y también utilizan = para asignar un valor a una variable

    {$year=30}
    My age is {$age+$year}  // 60

    Puede utilizar las funciones con variables

    My name is {$name|substr:0,3}  // Rai

    Usar {$ GLOBALS} para acceder a todas las variables globales como variable _SESSION, _GET, _POST, _SERVER.



    {#constant#}

    Puede constantes con la siguiente sintaxis: {




    {if="condition"}{/if}

    Es el equivalente de php. Puede utilizar variables y php en el estado.

    {if condition="$age < 20"}
        less than 20 years
    {elseif condition=
    "$age < 30"}
        
    less than 30 years
    {else}
         30 or more
    {/if}



    {loop="array"}{/loop}

    Esta etiqueta le permiten bucle una matriz, que es útil para imprimir una lista de artículos, noticias.

    {loop name="user"}
     {$value.user_id} - {$value.name} - {$value.phone}
    {/loop}

    Betweein{loop} y {/loop} se pueden usar variables especiales:
    • {$key}, key of the array element.
    • {$value}, value of the array.
    • 0, loop counter, it starts from 0. If you want starts from 1: {$counter+1}. If you do {$counter%2+1} each cycle will return 1 and 2.



    {include="template"}

    Use esta etiqueta para incluir plantillas externas. Útil para incluir encabezado y pie de si son los mismos en todas las páginas de su sitio web.

    {include="layout/header"}

    También puede utilizar el uso de caché estática con etiqueta incluyen. Compruebe la documentation.



    {function="myFunc"}

    Llamar a funciones php e imprimir el resultado.

    {function="pagination($selected_page)"}



    {ignore}{/ignore}

    Todos entre {ignore} y {/ignore} se elimina en el archivo compilado. Use ignorar para comentar sus plantillas.

    Hey, {ignore} {$name}, what's up {/ignore} dude?



    {noparse}{/noparse}

    Todo el código entre {noparse} {/noparse} no se va a analizar

    Hey {noparse}how are you {$name}{/noparse}?

    Output:
    Hey how are you {$name}?


    WYSIWYG - reemplazar Ruta

    Esta característica interesante permite a los diseñadores para crear plantillas en HTML regular con imágenes y estilos con rutas relativas, RainTPL reemplaza automáticamente estos caminos con las rutas de servidor correcto.

    Las rutas absolutas y caminos que termina con

    <link href="style.css" type="text/css" rel="stylesheet">
    <img src="img/logo.gif">

    Output html:
    <link href="tpl/style.css" type="text/css" rel="stylesheet">
    <img src="tpl/img/logo.gif">

    Nota: Si usted cambia raintpl:: $ base_url, RainTPL reemplazará a la ruta con raintpl:: $ base_url.



    Asignar y dibujar

    Esto es lo que has de escribir en la secuencia de comandos para asignar variables y extraer la plantilla.
    $tpl = new raintpl(); //include Rain TPL
    $tpl->assign( "age", "30" ); // assign variable
    $tpl->assign( array( "age" => "30", "name" => "Rain" ) ); // associative array
    $tpl->assign( "user", $user ); // assign an array
    $tpl->draw( "mytemplate" ); // draw the template
    Disponible también es un método de caché que puede mejorar drásticamente la velocidad de carga de su página.Compruebe la documentation.


    Speed Test

    ¿Cuál es el motor de plantillas más rápido PHP? En esta página probado pocos motores de plantilla, por el tiempo de prueba y la memoria. La prueba se ejecuta en el template compilado, mediante pruebas de la variable de asignación y el lazo. La memoria caché está desactivada.

    Link al test
    Link a sitio oficial de RainTPL



    2011-06-24

    Modo correcto de agregar CSS y JS desde la vista en CakePHP 1.3.x y 2.0Dev

    Modo correcto y valida CakePHP 1.3.x y 2.0 Dev es desde el archivo example.ctp:
    $this->addScript($this->Html->script('tab_enabler')); 
    $this->addScript($this->Html->css('jquery.tabs'));
    
    Es un ejemplo para incluir de manera correcta los archivos CSS y JS desde la VIEW o ELEMENT para que se agrege dentro de la variable $scripts_for_layout para no generar error con la validacion de W3C ya que no es correcto agregar el link a un archivo css dentro del BODY .

    Lo bueno que tiene este método también es que si tenes un ELEMENT  que utiliza el mismo CSS o JS o ya esta incluido en el Layout no lo agrega de nuevo.

    Muy útil esto también ;)

    Saludos

    2011-06-13

    Creando servicios de red TCP con PHP y xinetd

    Introducción

    No todo en PHP es Web y HTTP. Podemos usar PHP para muchas otras cosas. Por ejemplo podemos crear de una forma muy sencilla servicios de red. Cuando creamos servicios de red necesitamos obviamente un servidor de red (bien sea TCP o UDP).
    Cuando trabajamos con Web y HTTP este servidor suele ser Apache (o similares), pero si queremos crear un servicio específico (no HTTP), además del servicio de red que queramos crear, necesitaríamos crear un servidor.
    No todo en PHP es Web y HTTP. Podemos usar PHP para muchas otras cosas. Por ejemplo podemos crear de una forma muy sencilla servicios de red.
    Esto lo podemos hacer con C, Java e incluso con PHP, pero cuando trabajamos en entornos Linux existe un daemon que nos permite desplegar servicios de red de una forma muy sencilla, encargándose de la parte del servidor y dejándonos a nosotros la parte del servicio de red. Este daemon es xinetd.
    Vamos a ver cómo crear un sencillo servicio de red TCP con xinetd y PHP… ¡Empecemos!

    Creando el servicio de red TCP con Xinetd y PHP

    El ejemplo que vamos a realizar escuchará del puerto 69321, e inicialmente dirá “Hola” cuando alguien realice una petición TCP a dicho puerto. El script del ejemplo es sumamente complicado:
    1. // /home/gonzalo/tests/test1.php  
    2. echo "HELLO\n";  
    Bien. Ahora lo que queremos es que nuestro servicio de red escuche el puerto tcp 60321. Para esto tenemos que definir en nuestro archivo /etc/services el puerto en cuestión:
    1. // /etc/services  
    2. ...  
    3. myService   60321/tcp # my hello service  
    Y finalmente creamos la configuración en el daemon xinetd. Para ello creamos el archivo /etc/xinetd.d/myService:
    1. # default: on  
    2. # description: my test service  
    3.   
    4. service myService  
    5. {  
    6.         socket_type = stream  
    7.         protocol = tcp  
    8.         wait = no  
    9.         user = gonzalo  
    10.         server = /usr/local/bin/php-cli  
    11.         server_args = /home/gonzalo/tests/test1.php  
    12.         log_on_success += DURATION  
    13.         nice = 10  
    14.         disable = no  
    15. }  
    Reiniciamos el daemon para que lea la nueva configuración del servicio que hemos creado:
    1. sudo /etc/init.d/xinetd restart  
    Y listo. Ya tenemos nuestro servicio de red operativo y funcionando. Para probarlo podemos usar un simple telnet al puerto definido:
    1. telnet localhost 60321  
    2. Trying ::1...  
    3. Trying 127.0.0.1...  
    4. Connected to localhost.  
    5. Escape character is '^]'.  
    6. Hola  
    7. Connection closed by foreign host.  
    ¿Fácil, no? Sí pero útil, no mucho. Por esto vamos a cambiar un poco es script para que acepte variables de entrada. Esto no es HTTP por lo que no podemos usar las típicas variables $_POST y $_GET.
    Lo que tenemos que hacer es leer del stdin. En PHP, al igual que con otros lenguajes, esto es muy sencillo:
    1. $handle = fopen('php://stdin','r');  
    2. $input = fgets($handle);  
    3. fclose($handle);  
    4.   
    5. echo "Hola {$input}";  
    Reiniciamos el xinetd y tenemos nuestro servicio listo
    1. telnet localhost 60321  
    2. Trying ::1...  
    3. Trying 127.0.0.1...  
    4. Connected to localhost.  
    5. Escape character is '^]'.  
    Vemos que el telnet se nos quedará a la espera que introduzcamos un texto. Escribimos: “gonzalo” y obtenemos:
    1. gonzalo  
    2. Hola gonzalo  
    3. Connection closed by foreign host.  

    Conclusión

    Y esto es todo. Con este sencillo script vemos que, si bien PHP es un lenguaje destinado principalmente para el desarrollo Web, podemos usarlo para otras cosas, manteniendo su punto fuerte: la sencillez.
    ¿Para qué nos puede servir esto? Bueno. Para empezar nos sirve para leer datos de dispositivos de red que tengamos por ahi, como báculas, lectores de tarjetas, sensores… Muchos de estos dispositivos suelen permitirnos en su configuración establecer una IP/puerto a la que van a enviar información en forma de trama TCP.
    También podemos usarlo para comunicar procesos de una manera simple, sin necesidad de meternos con servidores XMLRPC/Soap y demás. En fin que es una herramienta más que tenemos a nuestra disposición para afrontar nuestros desarrollos.

    Fuente: Link

    2011-06-05

    Tips o Truco para guarda Array en una constante con PHP

    Hay dos forma muy simple para guarda un Array dentro de una constante.

    1- Por medio de json_decode() 



    2- Por medio de eval(), var_export()



    3- Por medio serialize() y unserialize()



    Para mi gusto por seguridad y simpleza la opción 1 o 3  son las mejores de implementar dentro de codigo PHP.