20 librerías alucinantes de PHP que debes conocer – Parte 1

El lenguaje PHP, el cual se lanzó allá por el año 1995, es ahora mayor de edad y se nos está haciendo un poco mayor, pero es no quita que sea uno de los lenguajes de programación más famoso del mundo, y la primera opción para muchos desarrolladores web.

La comunidad de PHP en Github es una de las más grandes y activas, con proyectos alucinantes que salen a la luz constantemente. En este artículo te mostramos 20 librerías que nos han llamado poderosamente la atención.

Requests for PHP

Una librería sin dependencias que te permite enviar peticiones HTTP. Te brinda todos los métodos necesarios para añadir cabeceras, acceder a los datos de las respuestas, gestionar formularios y todo lo que necesites. Todo eso empaquetado dentro de una API muy sencilla de utilizar.

$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) "[...]"

Rinvex Country

Rinvex Country es un paquete PHP que permite a los desarrolladores obtener información detallada sobre los paises del mundo. Mediante unos 50 métodos podrás obtener el área de Angola, la moneda de Chipre, el gentilicio de Namibia e incluso el nombre FIFA de Finlandia. Hay un montón de información disponible y sus fuentes son bastante fiables.

$egypt = country('eg');

$egypt->getCapital();   // Cairo
$egypt->getDemonym();   // Egyptian
$egypt->getTld();       // .eg
$egypt->getContinent(); // Africa
$egypt->getSubregion(); // Northern Africa
$egypt->getBorders();   // ["ISR","LBY","SDN"]

Botman

Una librería de PHP para desarrollar bots de mensajería. Funciona con casi todas las plataformas de mensajería instantánea más populares incluyendo Facebook Messenger, Slack, Telegram, WeChat y demás. Además cuenta con un proyecto en Laravel, disponible en este enlace.

// create an instance
$botman = BotManFactory::create($config);

// give the bot something to listen for.
$botman->hears('hello', function (BotMan $bot) {
    $bot->reply('Hello yourself.');
});

// start listening
$botman->listen();

Charts

Paquete de Laravel para generar gráficas personalizables mediante datasets. El paquete funciona como un wrapper de PHP para múltiples librerías gráficas de Javascript, permitiendo a los desarrolladores crear una ampliar variedad de gráficos, indicadores y barras de progreso utilizando una sola herramienta.

$chart = Charts::create('line', 'highcharts')
    ->view('custom.line.chart.view') 
    ->title('My nice chart')
    ->labels(['First', 'Second', 'Third'])
    ->values([5,10,20])
    ->dimensions(1000,500)
    ->responsive(false);

Swap

Swap te brinda la oportunidad de obtener el tipo de cambio de una serie de plataformas como Fixer, Google y Yahoo. Las respuestas a cada solicitud pueden almacenarse en caché, para poder acceder a la información más tarde. La librería también está disponible como paquete de Laravel también.

// Build Swap with Fixer.io
$swap = (new Builder())
    ->add('fixer')
    ->build();
    
// Get the latest EUR/USD rate
$rate = $swap->latest('EUR/USD');

// 1.129
$rate->getValue();

// Get the EUR/USD rate 15 days ago
$rate = $swap->historical('EUR/USD', (new DateTime())->modify('-15 days'));

Math PHP

Una colección de funciones matemáticas y algoritmos que van desde el álgebra más simple, a las finanzas, estadísticas, análisis numérico y demás campos. La librería es modular, cuenta con una API muy sencilla y no requiere dependencias externas.

// Factors of an integer
$factors = Algebra::factors($n);

// Fibonacci sequence
$fib = Advanced::fibonacci($n);

// Combinations
$nCk  = Combinatorics::combinations($n, $k);

// Likelihood ratios
$LL = Experiment::likelihoodRatio($a, $b, $c, $d);

PHPUnit

PHPUnit es un avanzado framework de testing que permite a los equipos de desarrollo probar a fondo sus códigos. Las unit tests están escritas en clases independientes orientadas a objetos con la ayuda de muchos método para gestionar aserciones, dependencias, etc. Cuentas con una simple CLI para ejecutar pruebas y generar informes.

class StackTest extends TestCase
{
    public function testPushAndPop()
    {
        $stack = [];
        $this->assertEquals(0, count($stack));

        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack));

        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
}

Atoum

Otro framework de testing menos popular, el cual también quería compartir con vosotros. Atoum ofrece una instalación en un solo paso y un flujo de trabajo relativamente simple, manteniendo una gran cantidad de excelentes características.

$this->given($testedInstance = new testedClass())
    ->and($testedClass[] = $firstValue = uniqid())
    ->then
        ->sizeof($testedInstance)->isEqualTo(1)
        ->string($testedClass[0])->isEqualTo($firstValue);

Simple Regex Language

Una implementación en PHP que te ayudará a confeccionar expresiones regulares para tus desarrollos. La librería te proporciona múltiples métodos que se pueden encadenar para formar distintas reglas que sean un poco más legibles que las que solemos utilizar. La librería también cuenta con versión para Javascript y para Python.

$query = SRL::startsWith()
    ->anyOf(function (Builder $query) {
        $query->digit()
            ->letter()
            ->oneOf('._%+-');
    })->onceOrMore()
    ->literally('@')
    ->anyOf(function (Builder $query) {
        $query->digit()
            ->letter()
            ->oneOf('.-');
    })->onceOrMore()
    ->literally('.')
    ->letter()->atLeast(2)
    ->mustEnd()->caseInsensitive();

Stash

Stash te permite acelerar tu código almacenando en caché los resultados de esas funciones o códigos pesados. Ciertas acciones, como las consultas a base de datos o las llamadas a APIs externas, tardan bastante tiempo en ejecutarse, pero suelen tener siempre los mismos resultados en periodos cortos de tiempo. Esto hace que sea más eficiente el hecho de almacenar los resultados y llamarlos de nuevo más tarde.

$pool = $this->cachePool;

// Get a Stash object from the cache pool.
$item = $pool->getItem("/user/{$userId}/info");

// Get the data from it, if any happens to be there.
$userInfo = $item->get();

// Check to see if the cache missed, which could mean that it either
// didn't exist or was stale.
if($item->isMiss())
{
    // Run the relatively expensive code.
    $userInfo = loadUserInfoFromDatabase($userId);

    // Set the new value in $item.
    $item->set($userInfo);

    // Store the expensive code so the next time it doesn't miss.
    $pool->save($item)
}

Fuente: tutorialzine.com

COMPARTE ESTE ARTÍCULO

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