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

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.

Puedes leer aquí la primera parte

Underscore - Caja de herramientas de PHP

Underscore es un port del underscore.js original (la caja de herramientas para aplicaciones de JavaScript). La versión de PHP no decepciona y cuenta con soporte para casi todas las funciones originales. Aquí tienes algunos ejemplos:

__::each(array(1, 2, 3), function($num) { echo $num . ','; }); // 1,2,3,

$multiplier = 2;
__::each(array(1, 2, 3), function($num, $index) use ($multiplier) {
  echo $index . '=' . ($num * $multiplier) . ',';
});
// prints: 0=2,1=4,2=6,

__::reduce(array(1, 2, 3), function($memo, $num) { return $memo + $num; }, 0); // 6

__::find(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // 2

__::filter(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // array(2, 4)

La librería también cuenta con soporte para el encadenado, lo que hace que sea aún más potente.

Requests - Peticiones HTTP sencillas

Requests es una librería que hace que sea más sencillo el emitir peticiones HTTP. Si eres como yo, y nunca puedes recordar las diversas opciones que le pasas a Curl, esto es para ti:

$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);
// int(200)

var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"

var_dump($request->body);
// string(26891) "[…]"

Con esta librería, puedes enviar peticiones HTTP como HEAD, GET, POST, PUT, DELETE y PATCH, añadir archivos y parámetros en arrays, además de acceder a todos los datos de la respuesta.

Buzz - Librería fácil para peticiones HTTP

Buzz es otra librería PHP para emitir también peticiones HTTP. Aquí tienes un ejemplo:

$request = new BuzzMessageRequest('HEAD', '/', 'http://google.com');
$response = new BuzzMessageResponse();

$client = new BuzzClientFileGetContents();
$client->send($request, $response);

echo $request;
echo $response;

Lo peor de esta librería es que carece de documentación, por lo que tendrás que picar el código fuente para tener una idea general de todo lo que puedes hacer con ella. O bien puedes optar por la librería Requests que te he expuesto anteriormente.

Goutte - Librería de parseo

Goutte es una librería para extraer datos y parsear páginas web. Proporciona una estupenda API que hace que sea sencillo seleccionar elementos específicos de páginas webs remotas.

require_once '/path/to/goutte.phar'; 

use GoutteClient; 

$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/'); 

// Click on links: 

$link = $crawler->selectLink('Plugins')->link();
$crawler = $client->click($link); 

// Extract data with a CSS-like syntax: 

$t = $crawler->filter('#data')->text(); 

echo "Here is the text: $t";

Carbon - Librería de gestión de fechas

Carbon es una simple extensión de la API de DateTime. Mejora la clase con algunos métodos útiles para trabajar con fechas y horas. Por ejemplo:

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));

$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);

$officialDate = Carbon::now()->toRFC2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');

// comparisons are always done in UTC
if (Carbon::now()->gte($endOfWorld)) {
    die();
}

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}

echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

Carbon lleva mucho tiempo sin actualizarse, por lo que es posible que quieras echar un vistazo a Datum, un fork que sigue en activo.

Ubench - Micro librería de benchmarking

Ubench es una micro librería de benchmarking para tu código PHP. Controla el tiempo de ejecución y el uso de la memoria. He aquí un ejemplo:

use UbenchUbench;

$bench = new Ubench;

$bench->start();

// Execute some code

$bench->end();

// Get elapsed time and memory
echo $bench->getTime(); // 156ms or 1.123s
echo $bench->getTime(true); // elapsed microtime in float
echo $bench->getTime(false, '%d%s'); // 156ms or 1s

echo $bench->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb
echo $bench->getMemoryPeak(true); // memory peak in bytes
echo $bench->getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb

// Returns the memory usage at the end mark
echo $bench->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb

Recomendamos ejecutar estas tareas mientras estés en desarrollo, nunca en producción.

Validation - Validador de campos

Validation pretende ser el motor de validación más impresionante jamás creado para PHP. Pero, ¿qué nos puede ofrecer? Míralo por ti mismo:

use RespectValidationValidator as v; 

// Simple Validation 

$number = 123;
v::numeric()->validate($number); //true 

// Chained Validation 

$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); //true 

// Validating Object Attributes 

$user = new stdClass;
$user->name = 'Alexandre';
$user->birthdate = '1987-07-01'; 

// Validate its attributes in a single chain: 

$userValidator = v::attribute('name', v::string()->length(1,32))
                  ->attribute('birthdate', v::date()->minimumAge(18)); 

$userValidator->validate($user); //true

Con esta biblioteca puedes validar formularios u otros datos enviados por los usuarios. Además, es compatible con una amplia serie de controles existentes, errores que se pueden capturar y mensajes de error personalizables.

 

COMPARTE ESTE ARTÍCULO

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