14 estupendas librerías de PHP que tienes que conocer - Parte 1

Este es un momento emocionante para ser desarrollador PHP. Se liberan un montón de útiles librerías todos los días, y con la ayuda del Composer y Github, las puedes descubrir e instalar facilmente. En este listado te muestro las 14 que más me han gustado. ¿Tu librería favorita no está en la lista? Compartelo con nosotros en la sección de comentarios

Dispatch – Micro Framework

Dispatch es un micro framework de PHP. No te proporciona un control completo sobre el MVC, pero puedes definir reglas para las URL y métodos para organizar mejor tu aplicación. Esto es perfecto para APIs, webs simples o prototipos:

// include the library
include 'dispatch.php';

// define your routes
get('/greet', function () {
    // render a view
    render('greet-form');
});

// post handler
post('/greet', function () {
    $name = from($_POST, 'name');
    // render a view while passing some locals
    render('greet-show', array('name' => $name));
});

// serve your site
dispatch();

Puede hacer coincidir determinados tipos de peticiones HTTP y rutas, crear vistas y mucho más. Si combinas Dispatch con otros frameworks de esta lista, puedes contar con una configuración muy potente y ligera

Klein – Enrutamiento rápido para PHP

Klein es una ligera librería de enrutamiento para PHP 5.3+. Cuenta con una sintaxis mucho más elaborada que Dispatch, pero es muy rápida. Aquí tienes un ejemplo:

respond('/[:name]', function ($request) {
    echo 'Hello ' . $request->name;
});

También puedes suscribirte a métodos HTTP específicos y utilizar expresiones regulares como rutas

respond('GET', '/posts', $callback);
respond('POST', '/posts/create', $callback);
respond('PUT', '/posts/[i:id]', $callback);
respond('DELETE', '/posts/[i:id]', $callback);

// To match multiple request methods:
respond(array('POST','GET'), $route, $callback);

// Or you might want to handle the requests in the same place
respond('/posts/[create|edit:action]?/[i:id]?', function ($request, $response) {
    switch ($request->action) {
        // do something
    }
});

Klein es ideal para pequeños proyectos, puesto que hay que ser muy disciplinado cuando se utiliza una librería como esta en aplicaciones más grandes. El código, en ese tipo de proyectos, puede llegar a ser imposible de mantener en un futuro. Si quieres utilizar esto en proyectos complejos, yo optaría mejor por un framework MVC completo como Laravel o CodeIgniter.

Ham – Enrutamiento y caché

Ham es también un framework ligero para enrutamiento, pero que utiliza el almacenamiento en caché ganar aún más velocidad en sus desarrollos. Esto se logra mediante el cacheo de cualquier entrada o salida relacionada con XCache/APC. Aquí hay un ejemplo:

require '../ham/ham.php';

$app = new Ham('example');
$app->config_from_file('settings.php');

$app->route('/pork', function($app) {
    return "Delicious pork.";
});

$hello = function($app, $name='world') {
    return $app->render('hello.html', array(
        'name' => $name
    ));
};
$app->route('/hello/', $hello);
$app->route('/', $hello);

$app->run();

La librería requiere que tengas instalado o XCache o APC, lo que significa que no funcionará en la mayoría de los proveedores de alojamiento. Pero si lo hace, tener uno de estos instalado puede acelerar muy mucho tu proyecto web. Hasta límites insospechados.

Assetic – Gestión de assets

Assetic un framework que gestiona assets en PHP. Combina y minimiza tus activos CSS/JS. Así es cómo se utiliza:

use AsseticAssetAssetCollection;
use AsseticAssetFileAsset;
use AsseticAssetGlobAsset;

$js = new AssetCollection(array(
    new GlobAsset('/path/to/js/*'),
    new FileAsset('/path/to/another.js'),
));

// the code is merged when the asset is dumped
echo $js->dump();

Combinar los activos de esta manera es una buena idea, ya que puede acelerar tu sitio. No sólo el tamaño de la descarga total  se reduce, sino también una gran cantidad de peticiones HTTP innecesarias.

ImageWorkshop – Manipulación de imágenes con capas

ImageWorkshop es una librería de código abierto que te permite manipular las imágenes mediante capas. Con él puedes cambiar el tamaño de una imagen, recortarla, hacer miniaturas, añadir marcas de agua y mucho más. Aquí tienes un ejemplo:

// We initialize the norway layer from the picture norway.jpg
$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg'); 

// We initialize the watermark layer from the picture watermark.png
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png'); 

$image = $norwayLayer->getResult(); // This is the generated image ! 

header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%
exit;

ImageWorkshop se desarrolló para hacer fáciles los casos más comunes de manipulación de imágenes en PHP. Si necesita algo más potente, sin embargo, echa un vistazo a la librería Imagine.

Snappy – Librería para PDF e instantáneas

Snappy es una biblioteca de PHP5 que te permite tomar instantáneas o crear archivos PDF de URLs o documentos HTML. Depende de la binaria wkhtmltopdf, que está disponible en Linux, Windows y OSX. Se utiliza así:

require_once '/path/to/snappy/src/autoload.php'; 

use KnpSnappyPdf; 

// Initialize the library with the
// path to the wkhtmltopdf binary:
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 

// Display the resulting pdf in the browser
// by setting the Content-type header to pdf: 

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"'); 

echo $snappy->getOutput('http://www.github.com');

Ten en cuenta que llamar a binarios externos, seguramente no esté permitido por tu proveedor de hosting.

Idiorm – Librería ORM ligera

Personalmente, Idiorm es una de mis librerías favoritas, y ya ha aparecido en más de un tutorial de por aquí antes. Es una librería ORM ligera y un generador de consultas fluidas para PHP 5 que se construye en la parte superior de la DOP. Con él, puedes olvidarte de escribir el tedioso SQL:

$user = ORM::for_table('user')
    ->where_equal('username', 'j4mie')
    ->find_one();

$user->first_name = 'Jamie';
$user->save();

$tweets = ORM::for_table('tweet')
    ->select('tweet.*')
    ->join('user', array(
        'user.id', '=', 'tweet.user_id'
    ))
    ->where_equal('user.username', 'j4mie')
    ->find_many();

foreach ($tweets as $tweet) {
    echo $tweet->text;
}

Idiorm tiene una librería hermana llamada de París, que puedes echar un vistazo si con Idiorm no te apañas.

 

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP