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
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
Image
AFUP Meet-up DBToolsBundle
15/02/2024

Meetup AFUP Nantes de février : parlons anony­mi­sa­tion avec le DbTools­Bundle Symfony

Notre expert Symfony / PHP prend la parole au Meet-up de l’AFUP Nantes le 21 février pour présen­ter le nouveau bundle Symfony déve­loppé par Makina Corpus : le DbTools­Bundle !

Voir l'article
Image
Encart Article Symfony Pierre
13/02/2024

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

Pourquoi et comment avons nous fait le choix de faire évoluer la concep­tion de nos projets Symfony, et quelles erreurs avons-nous faites ?

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus