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 + Vue.js
21/06/2022

Créer une application Symfony/Vue.js

Pour faire des essais ou bien démarrer un nouveau projet, vous avez besoin de créer rapidement une application Symfony couplée avec un front Vue.js ? Suivez le guide !

Voir l'article
Image
PHPUnit
03/05/2022

Scénario complexe dans PHPUnit et ordre d'exécution des tests

J'ai récemment (re)découvert une fonctionnalité suffisamment banale et simple de PHPUnit pour qu'on oublie qu'elle existe lorsque nous n'avons plus besoin d'elle.

Voir l'article
Image
Logo Symfony Makina Corpus
09/11/2021

Comment démarrer un projet Symfony 5 en 5 minutes ?

Depuis quelques versions, le framework Symfony fournit de nombreux outils pour bâtir très rapidement une application fonctionnelle. Voyons ce qu'on peut faire en 5 minutes.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus