15 mejores framework PHP para desarrolladores


Un framework web acelera el desarrollo, mejora la colaboración de los integrantes del equipo y ayuda a mantener el código organizado, estandarizado, permitiendo reducir las tareas de códigos repetitivos, así como desarrollar un sitio web eficaz en menos tiempo.

PHP es un lenguaje de programación con una amplia colección librerías, comunidad, documentación y en constante crecimiento. Para reducir la carga de trabajo, los principales sitios en Internet están utilizando algún framework PHP que más los ayude a sus necesidades. Entre ellos, les presento la siguiente lista:

AURA

aura_framework

El proyecto Aura se centra en una colección de paquetes de librerías independientes de alta calidad, probadas, semánticamente versionadas, compatibles con los estándares que se pueden utilizar en cualquier código. Cada librería es autónoma y tiene sólo las cosas que necesita para su principal propósito. Ninguno de los paquetes de librería depende de ningún otro paquete. Ellos están desacoplados, no sólo desde cualquier framework en particular, sino también el uno del otro. Esto significa que los desarrolladores pueden utilizar tanto o tan poco del proyecto, según sea necesario.

Visite su página web oficial.

Kohana

kohana_framework

Es un elegante framework HMVC que proporciona un amplio conjunto de componentes para la construcción de aplicaciones web.

Visite su página web oficial.

Laravel

laravel_framework

Laravel es un moderno framework limpio y robusto para el desarrollo de aplicaciones restful.

Visite su página web oficial.

Phalcon

phalcon_framework

Es un framework PHP fullstack entregado con una extensión hecha en C. Su innovadora arquitectura hace que este framework sea el mas rápido jamas construido a la fecha.

Visite su página web oficial.

Lumen

lumen_framework

Lumen es la solución perfecta para la construcción de micro-servicios basados en Laravel y Blazing Fast API. Lumen es uno de los micro-framework mas rápidos disponibles en la actualidad.

Visite su página web oficial.

Slim

slim_framework

Slim es un micro-framework desarrollado en PHP, diseñado para construir con rapidez aplicaciones web simples pero poderosas y APIS.

Visite su página web oficial.

Webiny

webiny_framework

Desarrollado como base para la plataforma Webiny (la nueva era CMS), pudiéndose usar para cualquiera de sus proyectos.

Visite su página web oficial.

RazorFlow

razonFloor_framework

Con RazorFlow puedes construir dashboard móviles interactivos desarollados con PHP y Javascript. Puedes usar sus API para construir tableros completos, con todas sus funciones.

Visite su página web oficial.

CodeIgniter

codeigniter-logo

Es un framework PHP potente construida para desarrolladores que necesiten una caja de herramientas simple y elegante para crear aplicaciones web con todas sus funciones.

Visite su página web oficial.

Recess

recess_framework

Recess es un framework RESTful PHP open source,  diseñado para darle una experiencia de desarrollo divertida.

Visite su página web oficial.

Symfony

symphony_framework

Symphony es uno de los mejores framework PHP reconocida por sus opciones de alta flexibilidad, estabilidad, requisitos mínimos y facilidad de uso.

Visite su página web oficial.

Prado

prado_framework

Prado es un framework basado en componentes y a la programación orientada a eventos para el desarrollo de aplicaciones web con PHP 5. PRADO significa PHP Rapid Application Development Object-oriented.

Visite su página web oficial.

PHPiexe

phpixe_framework

PHPiexe es un framework MVC PHP ligero diseñado para ser rápido, fácil de aprender y proporcionar una base sólida para el desarrollo.

Visite su página web oficial.

Yaf

yaf_framework

YAF es el primer framework PHP que esta escrito en C y construido como una extensión PHP.

Visite su página web oficial.

YII

yii_framework

Yii framework viene con características completas como MVC, DAO/ActiveRecord, caching, autenticación y rol basados en Access Control.

Visite su página web oficial.

Construyendo aplicaciones web con PHP, LUA y REDIS

php_redis

En un post anterior ya habíamos mencionado que es REDIS y que podríamos hacer con él.
Para el siguiente post, es necesario que ya tengan instalado REDIS y conocer algunos comandos básicos. Otro requisito para el presente ejemplo es conocer el lenguaje de programación LUA.

Conociendo LUA

lua

LUA es un lenguaje de programación imperativo, estructurado y muy veloz, se puede usar para desarrollar aplicaciones de todo tipo. LUA es muy conocido porque se usa en las distintas aplicaciones comerciales de Adobe Macromedia, en videojuegos como Warcraft,Angry birds, y ademas para controlar hardware.

Es considerado uno de los lenguajes de programación mas veloces del mundo, siendo por ello, muy utilizado para el desarrollo de videojuegos y en aplicaciones móviles en las distintas plataformas.

Fue creado en 1993 por Roberto Lerusalimschy, Luiz Henrique de Figueiredo y Waldemar Celes, miembros del Grupo de Tecnología en Computación Gráfica (Tecgraf) de la Pontificia Universidad Católica de Río de Janeiro, Brasil.

Robert_Ierusalimschy_at_the_Lua_Workshop_2013

LUA significa “Luna” en portugués, de ahí su logo.

Su ultima versión estable a la fecha es la 5.2.3, bajo licencia MIT.

LUA es portable, es pequeño y corre en todas las plataformas que tengan un compilador C standard, como UnixWindowsOS-X, y los distintos Sistemas Operativos para móviles.

LUA no es un lenguaje orientado a objetos puro, pero proporciona meta-mecanismos para la implementación de clases y herencia.

LUA es un lenguaje dinámico y es muy flexible en la forma en que se declaran las variables. Al igual que Ruby, no hace falta una declaración formal, simplemente escribes el nombre y le asignas un valor (no tienen tipo).

Los datos pueden ser lógicos, enteros, números de coma flotante o cadenas.

Las estructuras de datos como vectores, conjuntos, tablas hash, listas y registros pueden ser representadas utilizando la única estructura de datos de LUA: La tabla.

Su sintaxis se basa en Scheme,SNobol,ModulaCLU C++.

Puedes visitar la documentación de LUA.

Instalando modulo de REDIS para PHP

Descargarse la librería de REDIS para PHP del siguiente repositorio de Github.

https://github.com/gchacaltana/phpredis

o también puede clonar el repositorio con GIT.

$ git clone https://github.com/gchacaltana/phpredis.git

Una vez descargado, ingresamos al directorio principal de la librería y ejecutamos desde nuestro terminal.

$ sudo apt-get install php5-dev
$ sudo phpize
$ ./configure
$ sudo make && make install

En el mensaje de la instalacion se muestra la ruta del archivo redis.so que se creo.
Copia el archivo redis.so en la siguiente ruta.

$ sudo cp /path/redis.so /etc/php5/conf.d/

Luego debe editar el archivo de configuracion de PHP (php.ini), agregando la siguiente linea.

extension = redis.so

Y reinicias tu servidor web

Para linux:

$ sudo service apache2 restart

Para Nginx:

$ sudo service nginx restart

En la información del phpinfo, debe aparecer el modulo redis, como se aprecia en la siguiente imagen.

phpinfo_redis

Ejemplo: Usuarios en linea

Como ejemplo, vamos a utilizar REDIS para almacenar el nombre de usuario y la fecha de
su última conexión a nuestro Sistema, para mostrar cuantos usuarios están en línea, de
esta forma evitamos realizar repetidas consultas a nuestra base de datos (MySQL), ya que
REDIS es un motor de base de datos en memoria RAM.

Creando un Sorted Set en REDIS.

Iniciamos el servicio de redis en nuestro servidor.

$ sudo service redis_6379 start

Ingresamos a redis y creamos una lista ordenada llamada “usersonline”, donde almacenaremos la lista de usuarios que se conectan a nuestro sistema. La clave sera el timestamp de la fecha de ingreso y el valor a almacenar sera el login de usuario.

Ejemplo:

El usuario jaimito ingreso al Sistema el día 09-03-2014 a las 00:48:00.

El valor timestamp de 2014-03-09 00:48:00 es 1394326080.

$ redis-cli
Redis 127.0.0.1:6379> zadd usersonline 1394326080 jaimito.
Redis 127.0.0.1:6379> zadd usersonline 1394326089 pepito.
Redis 127.0.0.1:6379> zadd usersonline 1394326099 gchacaltana.

Script PHP para conectarnos a REDIS

/**
 * Connecting Redis Server
 */
function connectRedis()
{
    (string) $serverRedis = "127.0.0.1"; //localhost
    (int) $portRedis = "6379"; //default port
    try {
        if (!class_exists('Redis')) {
            throw new Exception("Redis Library not found.");
        }
        $connection = new Redis();
        $connection->connect($serverRedis, $portRedis);
    } catch (Exception $e) {
        throw new Exception("There was a problem connecting to redis server.");
    }
 
    //validate redis connection
    if (isset($connection->socket)) {
        return $connection;
    } else {
        throw new Exception("The redis server is turned off.");
    }
}

Script PHP para Insertar registros a REDIS

/**
 * Insert element Sorted Set Redis Server.
 * @param string $set, nombre de la lista ordenada en redis.
 * @param string $key, llave con que ordenaremos nuestra lista, 
 * en este caso sera el datetime de la fecha de ingreso del usuario.
 * @param string $value, será el nombre de usuario.
 */
function setSortedSetRedis($set, $key, $value)
{
    //conectamos a redis
    $redis = connectRedis();
 
    //El metodo zAdd agrega un elemento a una lista ordenada de Redis
    $redis->zadd($set, $key, $value);
 
    //cerramos la conexion a Redis.
    $redis->close();
    return true;
}

Script PHP para recuperar datos de REDIS.

/**
 * Get Records SortedSet redis server
 * @param string $set nombre del sorted set de redis.
 * @param string $order_by indica si el listado lo devuelve en forma
 * descendente o ascendente.
 */
function getElementsSortedSetRedis($set, $order_by = "desc")
{
    //conectado a Redis
    $redis = connectRedis();
    $records = array();
 
    if ($order_by == "desc") {
        //zRevRangeByScore: metodo que retorna los elementos de un
        //sorted set en forma descendente.
        $records = $redis->zRevRangeByScore($set, '+inf', '-inf');
    } else if ($order_by == "asc") {
        //zRangeByScore: metodo que retorna los elementos de un
        //lista en forma ascendente.
        $records = $redis->zRangeByScore($set, '-inf', '+inf');
    }
    //cerramos conexion a redis.
    $redis->close();
 
    //devolvemos listado
    return $records;
}

Script PHP para obtener cantidad de registros de una lista REDIS

/**
 * Get Count Set Order Redis Server
 * @param string $set, nombre de la lista ordenada en redis.
 * @return int cantidad total de registros de una lista.
 */
function getCountSortedSetRedis($set)
{
    //conectamos con redis
    $redis = connectRedis();
 
    //zCount: metodo que devuelve la cantidad de registros de una lista.
    (int) $value = $redis->zCount($set, '-inf', '+inf');
 
    //cerramos conexion
    $redis->close();
 
    //devolvemos el numero de registros de la lista.
    return $value;
}

Script LUA para eliminar elemento de una lista en REDIS.

--[[
LUA Script to delete items from list REDIS.
KEYS[1] = list name sent as a parameter.
KEYS[2] = datetime up to where you want to remove from the list.
--]]
local set = KEYS[1]
local maxValue = KEYS[2]
 
-- delete records sorted set redis.
local deleted = redis.call('zremrangebyscore',set,'-inf',maxValue)
-- return records deleted.
return deleted

Script PHP para ejecutar LUA en REDIS.

/**
 * Delete elements sorted set from LUA Script
 * @param string $set lista name REDIS.
 * @param int $maxValue datetime up to where you want to remove from the list.
 */
function delElementsSortedSetRedisFromLua($set, $maxValue)
{
    //indicamos la ruta del script .lua
    (string) $filename = "/path/script.lua";
    //verificamos si existe el archivo .lua
    if (!file_exists($filename)) {
        throw new Exception('file procedure script not found.');
    }
    //cargamos el contenido del script.lua en una variable php.
    $luaScript = file_get_contents($filename, FILE_USE_INCLUDE_PATH);
    //declaramos los parametros que recibira nuestro script.lua
    $params = array($set, $maxValue);
    //cantidad de parametros a enviar al script.lua
    (int) $paramCount = count($params);
    //abrimos conexion a redis
    $redis = connectRedis();
    //usamos el metodo eval de redis para ejecutar script.lua
    (int) $deleted = $redis->eval($luaScript, $params, $paramCount);
    //cerramos conexion a redis.
    $redis->close();
    //devolvemos el numero de elementos eliminados que devuelve script.lua
    return $deleted;
}

PHP + LUA + REDIS

Idea_images

Construir aplicaciones web usando REDIS + LUA te permite acelerar el tiempo de respuesta de las transacciones que puedas requerir en comparación con alguna base de datos relacional convencional, teniendo en cuenta para que tipo de soluciones necesitas almacenar información en memoria RAM.

REDIS de por sí es muy rápido y aplicando LUA como procedimiento almacenado, para ejecutar múltiples tareas, mejora la performance de REDIS y de la aplicación.