Makina Blog

Le blog Makina-corpus

Top 10 des composants PHP réutilisables


Une liste non exhaustive de composants que vous pouvez réutiliser dans vos applications ou CMS préférés.

Maintenant que vous savez utiliser composer avec Drupal, raison de plus pour ne pas réinventer la roue et utiliser les composants proposés par la communauté PHP.


Faker

Faker est une bibliothèque très pratique est maintenant présente dans tous les languages. Elle permet de générer des données, certes aléatoires, mais un peu plus avancées que du Lorem ipsum, comme par exemple :

  • un profil utilisateur ou une entreprise avec nom, prénom, adresse, numéro de téléphone
  • des données de paiement (IBAN ou numéro de carte bleue)
  • des couleurs, des images, des fichiers

Tout cela avec un support de la langue française et donc des données spécifiques à la France (SIREN/SIRET, départements, etc.).

<?php
$faker = Faker\Factory::create('fr_FR');
echo $faker->name; // Auguste Dupont
echo $faker->departmentNumber; // "2B"

Yaml Component

Yaml est un composant issu du framework Symfony permettant de parser ou de générer du Yaml, un format de représentation de données particulièrement lisible et simple à appréhender.

<?php
use Symfony\Component\Yaml\Yaml;

// Lecture
$value = Yaml::parse(file_get_contents('/path/to/file.yml'));

// Écriture
file_put_contents('/path/to/file.yml', Yaml::dump($value));


Urlify

URLify, tiré directement du framework python Django, facilite la création de slugs à partir de texte, en supprimant les accents, les apostrophes, les mots d'arrêt et en convertissant les alphabets non latins.

<?php
echo URLify::filter(' J\'étudie le français '); // jetudie-le-francais
echo URLify::filter('Lo siento, no hablo español.'); // "lo-siento-no-hablo-espanol"  

PHPOffice

PHPOffice est une suite complète de bibliothèques pour lire, écrire ou convertir des documents (Word, Excel, Powerpoint) sous différents formats.

<?php
// Ouvrir un fichier Word
$phpWord = \PhpOffice\PhpWord\IOFactory::load(__DIR__ . "/resources/{$name}.docx");
// Ajouter du texte sous forme HTML
$section = $phpWord->addSection();
$html = '<h1>Adding element via HTML</h1>';
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html);
// Convertir en PDF
$phpWord->save(__DIR__ . "/resources/{$name}.pdf", "PDF");

CSV

Bien que PHPOffice soit très complète, vous n'avez peut-être pas besoin d'autant pour simplement lire un fichier CSV lourd. Dans ce cas, préférez CSV. Il est maintenu par ThePHPLeague, ce groupe de développeurs propose d'ailleurs de nombreux composants réutilisables, agnostiques et très bien testés, parmi lesquels :

  • CommonMark : un parseur Markdown basé sur la spec CommonMark (voir plus bas pour d'autres parseurs)
  • HTML To Markdown : un convertisseur HTML vers Markdown
  • OAuth 2 Server et OAuth 2 Client : pour fournir ou consommer de l'OAuth
  • Omnipay : pour du paiement multi-plateforme

Twig

Moteur de template robuste, sécurisé et extensible, Twig propose une syntaxe lisible qui remplace agréablement PHPTemplate. On l'adore tellement qu'on le met dans tous nos Drupal.

{% for user in users %}
    * {{ user.name }}
{% else %}
    No users have been found.
{% endfor %}

MobileDetect

MobileDetect est un composant léger se basant sur le `User-Agent` et quelques autres en-têtes HTTP pour déterminer avec quel type d'appareil ou quel OS le visiteur fait appel au serveur. Il propose également de nombreuses intégrations (dont Symfony et Drupal).

<?php
$detect = new Mobile_Detect;
echo $detect->isMobile();
echo $detect->isTablet();
echo $detect->isiOS();

Parsedown ou PHPMarkdown

Dans la série des parseurs Markdown pour PHP, nous avons :

  • Parsedown, globalement la plus rapide
  • PHPMarkdown, une alternative
  • CommonMark (voir plus haut), bien plus lent que ses confrères

Dompdf ou Snappy

Lorsqu'il s'agit de génération de PDF ou d'image à partir de HTML, vous avez trois alternatives :

  • domdpf : robuste mais a des problèmes avec le HTML mal formé et le flottement en CSS, un peu de lenteur, utilisez des versions récentes pour éviter les failles de sécurité.
  • wkhtmltopdf : très active et performante, la référence
  • tcpdf : peu active

Nous vous conseillons d'essayer Snappy, cette bibliothèque est un wrapper autour de wkhtml très simple à utiliser.

<?php
// Génération de PDF
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
$snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf');
// Capture d'écran d'une page
$snappy = new Image('/usr/local/bin/wkhtmltoimage');
$snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/screenshot.img');


HTMLlawed ou HTMLpurifier

Ce sont toutes deux des composants de nettoyage de code HTML, très utile pour afficher du code HTML à provenance douteuse (mails ou simple éditeur WYSIWYG). Elles permettent de nettoyer tout code dangereux, mais aussi de réécrire le HTML defectueux pour qu'il soit gentil avec les navigateurs.

  • HTMLlawed est simple et très rapide, il a cependant un code douteux et difficilement lisible - il reste fiable et rapide, et peut correspondre à bon nombre d'usages;
  • HTMLPurifier est elle une bibliothèque plus moderne et très complète, cependant elle est aussi très grosse et n'apportera parfois que peu de valeur ajoutée par rapport à un composant plus simple.

C'est donc à vous de faire votre choix, les deux alternatives sont fiables, tout dépendra donc de votre besoin!

Actualités en lien

Image
Symfony
11/04/2024

Access Control : une biblio­thèque PHP pour gérer des droits d’ac­cès

Suite à un projet de gestion métier opéra­tion­nel dont la durée de vie et la main­te­nance sont à long termes, nous avons expé­ri­menté un passage de celui-ci sur l’archi­tec­ture hexa­go­nale et la clean archi­tec­ture.

Voir l'article
Image
Encart blog DBToolsBundle
21/03/2024

L’ano­ny­mi­sa­tion sous stéroïdes avec le DBTools­Bundle

Le DbTools­Bundle permet d’ano­ny­mi­ser des tables d’un million de lignes en seule­ment quelques secondes. Cet article vous présente la métho­do­lo­gie mise en place pour arri­ver à ce résul­tat.

Voir l'article
Image
Encart article 2 : Itéra­tions vers le DDD et la clean archi­tec­ture avec Symfony
20/02/2024

Itéra­tions vers le DDD et la clean archi­tec­ture avec Symfony (2/2)

Quels virages avons-nous pris après un premier projet expé­ri­men­tal pour stabi­li­ser notre concep­tion logi­cielle, et que ferons-nous plus tard ?

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus