Makina Blog
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
DbToolsBundle : sortie de la version 1.2
Découvrez les nouveautés de cette nouvelle version ainsi que les fonctionnalités à venir de la prochaine version majeure.
Access Control, bibliothèque PHP pour gérer des droits d’accès
Suite à un projet de gestion métier opérationnel dont la durée de vie et la maintenance sont à long termes, nous avons expérimenté un passage de celui-ci sur l’architecture hexagonale et la clean architecture.
L’anonymisation sous stéroïdes avec le DBToolsBundle
Le DbToolsBundle permet d’anonymiser des tables d’un million de lignes en seulement quelques secondes. Cet article vous présente la méthodologie mise en place pour arriver à ce résultat.