Programmation PHP/Symfony/Composant

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Description[modifier | modifier le wikicode]

Le framework Symfony possède des dizaines de composants[1], dont il convient de connaitre les fonctionnalités pour ne pas réinventer la roue. Pour les installer :

composer require symfony/nom_du_composant

Les quatre premiers ci-dessous sont inclus par défaut dans le microframework symfony/skeleton.

framework-bundle[modifier | modifier le wikicode]

Structure la configuration principale du framework sans laquelle aucun composant n'est installable[2].

console[modifier | modifier le wikicode]

Fournit la possibilité d'exécuter le framework avec des commandes shell[3]. Par exemple pour obtenir la liste de toutes les commandes disponibles dans un projet :

php bin/console help list

dotenv[modifier | modifier le wikicode]

Gère les variables d'environnement non versionnées, contenues dans un fichier .env[4]. Elles peuvent aussi bénéficier de type checking en préfixant les types avec ":". Ex de .env :

IS_DEV_SERVER=1

Le parameters.yml récupère ensuite cette valeur et vérifie qu'il s'agit d'un booléen :

is_dev_server: '%env(bool:IS_DEV_SERVER)%'

yaml[modifier | modifier le wikicode]

Ajoute la conversion de fichier YAML en tableau PHP[5]. Ce format de données constitue une alternative plus lisible au XML pour renseigner la configuration des services. Par défaut le framework se configure avec config.yaml.

routing[modifier | modifier le wikicode]

Installe les annotations permettant de router des URLs vers les classes des contrôleurs MVC.

serializer[modifier | modifier le wikicode]

Permet de convertir des objets en tableaux ou dans les principaux formats de notation : JSON, XML, YAML et CSV[6].

 composer require symfony/serializer

Ce composant est notamment utilisé pour créer des APIs.

form[modifier | modifier le wikicode]

Construit des formulaires HTML.


Pour plus de détails voir : Programmation PHP/Symfony/Formulaire.

validator[modifier | modifier le wikicode]

Fournit des règles de validation pour les données telles que les adresses emails ou les codes postaux. Utile à coupler avec les formulaires pour contrôler les saisies.

translation[modifier | modifier le wikicode]

Module de traductions dans des fichiers contenant le ISO 639-1 de chaque langue du projet. Par défaut le français est dans translations/messages.fr.yml. On peut ensuite récupérer ces dictionnaires en Twig, ou en PHP via le service "translator".

event-dispatcher[modifier | modifier le wikicode]

Assure la possibilité d'écouter des évènements pour qu'ils déclenchent des actions.


Pour plus de détails voir : Programmation PHP/Symfony/Évènement.

process[modifier | modifier le wikicode]

Permet de lancer des sous-processus en parallèle[7]. Exemple qui lance une commande shell :

$process = new Process(['ls']);
$process->run();
Attention !

Logo En l'absence de $process->stop() ou de timeout, le sous-processus peut être stoppé en redémarrant le serveur PHP.


cache[modifier | modifier le wikicode]

Gère les connexions, lectures et écritures vers des serveurs de mémoire caches tels que Redis ou Memcached.

asset[modifier | modifier le wikicode]

Fonction Twig pour accéder aux fichiers CSS, JS ou images.

webpack-encore[modifier | modifier le wikicode]

Intégration de Webpack pour gérer la partie front end (ex : minifications des CSS et JS).

messenger[modifier | modifier le wikicode]

Messenger permet d'utiliser des queues au protocole AMQP. En résumé, il gère l'envoi de messages dans des bus qui sont lus par des handlers. On peut aussi persister ces messages en les envoyant dans des transports via un DSN, par exemple Dans RabbitMQ, Redis ou Doctrine.

php bin/console debug:messenger

workflow[modifier | modifier le wikicode]

Ce composant nécessite de créer (en YAML, XML ou PHP) la configuration d'un automate fini[8], c'est-à-dire la liste de ses transitions et états (appelés "places").

Ces graphes sont ensuite visualisables en image ainsi :

use Symfony\Component\Workflow\Definition;
use Symfony\Component\Workflow\Dumper\StateMachineGraphvizDumper;

class WorkflowDisplayer
...
$definition = new Definition($places, $transitions);
echo (new StateMachineGraphvizDumper())->dump($definition);
sudo apt install graphviz
php WorkflowDisplayer.php | dot -Tpng -o workflow.png

browser-kit[modifier | modifier le wikicode]

Simule un navigateur pour les tests d'intégration.

config[modifier | modifier le wikicode]

Permet de manipuler des fichiers de configurations.

contracts[modifier | modifier le wikicode]

Pour la programmation par contrat.

css-selector[modifier | modifier le wikicode]

Pour utiliser XPath.

debug[modifier | modifier le wikicode]

Fournit des méthodes statiques pour déboguer le PHP.

dependency-injection[modifier | modifier le wikicode]

Normalise l'utilisation du container de services.

dom-crawler[modifier | modifier le wikicode]

Fournit des méthodes pour parcourir le DOM.

expression-language[modifier | modifier le wikicode]

Pour évaluer des expressions.

filesystem[modifier | modifier le wikicode]

Méthodes de lecture et écriture dans les dossiers et fichiers.

finder[modifier | modifier le wikicode]

Recherche dans les dossiers et fichiers.

security[modifier | modifier le wikicode]

Ensemble de sous-composants assurant la sécurité d'un site. Ex : authentification, anti-CSRF.

guard[modifier | modifier le wikicode]

Extension de sécurité pour des authentifications complexes.

http-client[modifier | modifier le wikicode]

Pour lancer des requêtes HTTP.

http-foundation[modifier | modifier le wikicode]

Fournit des classes pour pour manipuler les requêtes HTTP, comme Request et Response que l'on retrouve dans les contrôleurs.

http-kernel[modifier | modifier le wikicode]

Permet d'utiliser des évènements lors des transformations des requêtes HTTP en réponses.

inflector[modifier | modifier le wikicode]

Accorde les mots anglais au pluriel à partir de leurs singuliers.

intl[modifier | modifier le wikicode]

Internationalisation, comme par exemple la classe "Locale" pour gérer une langue.

ldap[modifier | modifier le wikicode]

Connexion aux serveur LDAP.

lock[modifier | modifier le wikicode]

Pour verrouiller les accès aux ressources.

mailer[modifier | modifier le wikicode]

Pour envoyer des emails.

mime[modifier | modifier le wikicode]

Manipulation des messages MIME.

notifier[modifier | modifier le wikicode]

Pour envoyer des notifications telles que des emails, des SMS, des messages instantanés, etc.

options-resolver[modifier | modifier le wikicode]

Gère les remplacements de propriétés par d'autres, avec certaines par défaut.

phpunit-bridge[modifier | modifier le wikicode]

Apporte plusieurs fonctionnalités liées aux tests unitaires, telles que la liste des tests désuets ou des mocks de fonctions PHP natif.

property-access[modifier | modifier le wikicode]

Pour lire les attributs de classe à partir de leurs getters, ou des tableaux.

property-info[modifier | modifier le wikicode]

Pour lire les métadonnées des attributs de classe.

stopwatch[modifier | modifier le wikicode]

Chronomètre pour mesurer des temps d'exécution.

string[modifier | modifier le wikicode]

API convertissant certains objets en chaine de caractères.

templating[modifier | modifier le wikicode]

Extension de construction de templates.

var-dumper[modifier | modifier le wikicode]

Ajoute une fonction globale dump() pour déboguer des objets en les affichant avec une coloration syntaxique et des menus déroulant.

Ajoute aussi dd() pour dump() and die().

var-exporter[modifier | modifier le wikicode]

Permet d'instancier une classe sans utiliser son constructeur.

polyfill*[modifier | modifier le wikicode]

On trouve aussi une vingtaine de composants polyfill, fournissant des fonctions PHP retirées dans les versions les plus récentes.

Composants désuets[modifier | modifier le wikicode]

icu[modifier | modifier le wikicode]

Fermé en 2014.

locale[modifier | modifier le wikicode]

Arrêté dans Symfony 2.2.

class-loader[modifier | modifier le wikicode]

Retiré depuis Symfony 4.0.

Références[modifier | modifier le wikicode]