20 librerías de PHP a tener en cuenta este verano - Parte 2

Lanzado inicialmente en 1995, el lenguaje PHP ya ha alcanzado la mayoría de edad, pero esto no impide que siga siendo uno de los lenguajes de programación más utilizados en todo el mundo, y la primera opción de muchos desarrolladores back-end.

La comunidad de PHP en GitHub es también una de las comunidades más grande y más activa, con nuevos proyectos que aparecen constantemente. Aquí está nuestra selección de las 10 librerías de PHP open source más útiles e interesantes que no te puedes perder en el verano de este 2016.

Climate

Climate es una librería para personas que ejecutan PHP desde línea de comandos. Ofrece una colección de métodos que dictar al terminal (tanto de entrada como de salida), y también algunas funciones de embellecimiento para formato. Puedes incluso dibujar y animar en arte ASCII.

$climate = new LeagueCLImateCLImate;

// Output
$climate->out('This prints to the terminal.');

// Input
$input = $climate->input('How you doin?');
$response = $input->prompt();

// Formatting
$padding = $climate->padding(10);

$padding->label('Eggs')->result('$1.99');
$padding->label('Oatmeal')->result('$4.99');
// Eggs...... $1.99
// Oatmeal... $4.99

Alice

Construido sobre Faker, Alice es una librería que genera objetos de datos falsos para pruebas. Para usarlo, primero tienes que definir la estructura de los objetos y los datos que deseas utilizar en ellos. Luego, con una función simple llamada Alice transformarás dicha plantilla en un objeto real con valores aleatorios.

// Template in person.yml file
Person:
    person{1..10}:
        firstName: '<firstName()>'
        lastName: '<lastName()>'
        birthDate: '<date()>'
        email: '<email()>'


// Load dummy data into an object
$person = NelmioAliceFixtures::load('/person.yml', $objectManager);

Ratchet

La librería Ratchet añade soporte para la interfaz de WebSockets en aplicaciones con backend PHP. Los WebSockets permiten la comunicación bidireccional entre el servidor y el lado del cliente en tiempo real. Para que esto funcione en PHP, Ratchet tiene que iniciar un proceso PHP separado que permanece siempre en funcionamiento de forma asíncrona y envía y recibe mensajes.

class MyChat implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        foreach ($this->clients as $client) {
            if ($from != $client) {
                $client->send($msg);
            }
        }
    }
}

// Run the server application through the WebSocket protocol on port 8080
$app = new RatchetApp('localhost', 8080);
$app->route('/chat', new MyChat);
$app->run();

PHPMailer

La colección de la librerías de PHP no estaría completa sin PHPMailer. Este proyecto está respaldado por una enorme comunidad y está implementada en populares sistemas, como WordPress y Drupal, por lo que es la opción más que segura para el envío de emails en PHP. Cuenta con soporte SMTP, puede crear mensajes de correo electrónico HTML, y mucho más.

require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]');    

$mail->addAttachment('/var/tmp/file.tar.gz');        
$mail->isHTML(true);                                  

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body in bold!';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

Hoa

Hoa no es en realidad una librería PHP, es todo un conjunto de librerías de PHP, que contiene todo tipo de utilidades útiles para el desarrollo web. Aunque no todas están plenamente documentadas, hay más de 50 librerías en este momento, y constantemente se están agregando más. Es completamente modular para que puedas seleccionar sólo las librerías que necesites.

// Hoa Mail
$message            = new HoaMailMessage();
$message['From']    = 'Gordon Freeman <[email protected]>';
$message['To']      = 'Alyx Vance <[email protected]>';
$message['Subject'] = 'Hoa is awesome!';
$message->addContent(
    new HoaMailContentText('Check this out: http://hoa-project.net/!')
);
$message->send();

// Hoa Session
$user = new HoaSessionSession('user');

if ($user->isEmpty()) {
    echo 'first time', "n";
    $user['foo'] = time();
} else {
    echo 'other times', "n";
    var_dump($user['foo']);
}

CssToInlineStyles

Cualquiera que haya intentado crear emails HTML sabe que es un dolor hacer inline todas las reglas CSS. Esta pequeña clase PHP hace todo el trabajo por ti y te ahorrará un montón de tiempo y de nervios. Sólo tienes que escribir tus estilos en un archivo .css normal y la librería PHP usará los selectores para asignarlos a las etiquetas correspondientes.

use TijsVerkoyenCssToInlineStylesCssToInlineStyles;

// create instance
$cssToInlineStyles = new CssToInlineStyles();

$html = file_get_contents(__DIR__ . '/examples/sumo/index.htm');
$css = file_get_contents(__DIR__ . '/examples/sumo/style.css');

// output
echo $cssToInlineStyles->convert(
    $html,
    $css
);

Stringy

Librería para hacer todo tipo de manipulaciones de cadenas. Ofrece una tonelada de métodos diferentes para la modificación de texto (reverse(), HtmlEncode(), ToASCII() etc.) y para recopilar información sobre una cadena (isAlphanumeric(), getEncoding(), entre otros). Lo mejor de Stringy es que también funciona con símbolos especiales como letras griegas o nórdicas.

s('Camel-Case')->camelize(); // 'camelCase'

s('   Ο     συγγραφέας  ')->collapseWhitespace(); // 'Ο συγγραφέας'

s('foo & bar')->containsAll(['foo', 'bar']); // true

s('str contains foo')->containsAny(['foo', 'bar']); // true

s('fòôbàř')->endsWith('bàř', true); // true

s('fòôbàř')->getEncoding(); // 'UTF-8'

s('&')->htmlDecode(); // '&'

Robo

Robo es un task runner como Gulp, para PHP. Con Robo puedes configurar automatismos que mejoren la productividad y el tiempo que tardas en desarrollar un proyecto después de hacer cambios. Robo puede ejecutar las pruebas, compilar código de los pre-procesadores, gestionar las actualizaciones del controlador de versiones, y muchas otras tareas útiles.

// Doing a Git Commit with Robo
public function pharPublish()
{
    $this->pharBuild()->run();
    $this->_rename('robo.phar', 'robo-release.phar');
    return $this->collectionBuilder()
        ->taskGitStack()
            ->checkout('gh-pages')
        ->taskGitStack()
            ->add('robo.phar')
            ->commit('robo.phar published')
            ->push('origin', 'gh-pages')
            ->checkout('master')
            ->run();
}

PHP Humanizer

Esta biblioteca coge las variables y las transforma en un formato más legible utilizando un conjunto de métodos. Por ejemplo puedes convertir números romanos en números normales, truncar cadenas largas y calcular bytes a kB/MB/GB. Soporta más de 15 idiomas.

use CoduoPHPHumanizerNumberHumanizer;

echo StringHumanizer::humanize('field_name'); // "Field Name"

echo NumberHumanizer::ordinalize(1); // "1st"
echo NumberHumanizer::ordinalize(23); // "23rd"

echo NumberHumanizer::toRoman(5); // "V"
echo NumberHumanizer::fromRoman("MMMCMXCIX"); // 3999

echo NumberHumanizer::binarySuffix(1024); // "1 kB"
echo NumberHumanizer::binarySuffix(1073741824 * 2); // "2 GB"

ColorExtractor

El último elemento de la lista es esta pequeña librería que extrae los colores de las imágenes. Para ello se recorre todos los píxeles de una imagen dada y devuelve una paleta de colores. Los desarrolladores pueden utilizar esta gama de colores para obtener los colores más dominantes y adaptar el diseño de acuerdo a ellos.

require 'vendor/autoload.php';

use LeagueColorExtractorColor;
use LeagueColorExtractorPalette;

$palette = Palette::fromFilename('./some/image.png');

$topFive = $palette->getMostUsedColors(5);
$colorCount = count($palette);
$blackCount = $palette->getColorCount(Color::fromHexToInt('#000000'));

Fuente: tutorialzine.com

COMPARTE ESTE ARTÍCULO

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