PHP, voilà le mot interdit est dit. Qu’importe si nous l’aimons ou pas, les statistiques sont là pour nous rappeler que PHPLangage de programmation s’exécutant côté serveur et permettant la création dynamique de pages web ou d'APIs. est encore utilisé par 79% des sites Web dont nous connaissons le langage de programmation côté serveur. Mais, malgré cette statistique, PHP reste dans le top 5 des langages les plus craints selon StackOverFlow ! La cause principalement à une syntaxe beaucoup trop permissive ou encore à des lenteurs inexpliquées ... en PHP 4 ou 5 ! Fort heureusement, PHP apprend de ses erreurs et évolue depuis des années, la version 7 sortie en 2015 ou encore plus récemment la version 8 sortie fin 2020 apportent à elles deux des évolutions non négligeables comme de meilleures performances, une meilleure gestion des erreurs, et surtout une mise en place du typage fort de données !
Couplé à des Frameworks tels quel Laravel ou Symfony, PHP devient une alternative concrète pour la réalisation d’API, de certains projets métier ou e-commerce !
Bonne question Fred ! Développé par l’entreprise française SensioLabs en 2005, SymfonyFramework PHP permettant de développer des applications web. est un FrameworkUn framework est un ensemble d'outils permettant de cadrer la façon dont on conçoit une application. MVC (modèle - vue – contrôleur) comportant de multiples composants destinés à faciliter le développement d’applications Web en PHP ! Il intègre notamment des générateurs de code, une barre d’outils pour le débogage web ou encore un serveur intégré pour démarrer le développement rapidement ! Il favorise également la maintenance à long terme grâce au très long support des versions majeures (https://symfony.com/releases).
Grand frère de Laravel (lancé en 2011 et qui lui pique moulte fonctionnalités), Symfony peut être utilisé pour développer des applications Web métiers, des APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. RESTREST (REpresentational State Transfer) est un style d'architecture logicielle qui fonctionne sous un certain nombre de contraintes. (même très facilement, nous le verrons ensuite) ou des sites avec des fonctionnalités poussées !
Si vous êtes déjà un convaincu de Symfony et que vous souhaitez démarrer un projet rapidement, je vous invite à découvrir les excellents articles de Corentin !
Ce ne sont pas les Frameworks qui manquent en PHP… Entre Symfony, Laravel, CodeIgniter ou encore Zend, le choix n’est pas forcément facile. Alors pourquoi choisir Symfony au détriment d’un autre ?
Tout d’abord, il est important de noter que Symfony n’est pas indiqué pour la réalisation de tous les projets ! Développer un site vitrine ou un simple blog avec ce Framework serait inutile car il est bien trop lourd ! Non, Symfony est plutôt indiqué pour la réalisation de projets d’envergure, nécessitant beaucoup de fonctionnalités ou encore un long support ! Son gros point fort, notamment par rapport aux autres frameworks, est qu’il permet d’avoir une organisation de code propre, ce qui permet un démarrage rapide du projet et du code métier !
En plus des points précédemment cités, voici quelques autres éléments de réponse qui font la force de Symfony :
En prenant en charge un certain nombre de tâches désagréables (développement de fonctionnalités mineures par exemple), Symfony permet aux développeurs de se concentrer plus rapidement sur le code métier de leur application ! Parmi les outils incontournables de Symfony, nous pouvons citer la barre très complète de débogage (également accessible en mode API (via un /_profiler)), la prise en charge native des environnements de développement, les pages d’erreur détaillées ou encore la sécurité native.
Qu’importe la version de Symfony, la documentation est très complète et des exemples de code sont fournis en plus des explications. La communauté est également forte, vous trouverez toujours réponses à vos questions. De plus, ils contribuent grandement à la croissance de Symfony !
Symfony est reconnu pour sa capacité à optimiser les performances des applications ! Symfony se classe d’ailleurs 3e au classement phpbenchmarks.com devant Laravel et Zend Framework.
Beaucoup d’intranets, de sites grand public ou de réseaux sociaux font confiance à Symfony ! Nous pouvons citer par exemple Yahoo.com ou encore Dailymotion qui sont développés avec Symfony. Par ailleurs, la structure du CMSC'est un système de gestion de contenu. e-commerce Prestashop se base aussi sur Symfony, tout comme le CMS Drupal.
L’idée de Symfony est de ne pas s’enfermer dans Symfony ! Symfony respecte les standards de PHP que ce soit autant les conventions de dénomination de classes ou encore celles de PHPUnit. Par ailleurs, Symfony utilise lui-même des librairies externes de base, l’ORM Doctrine ou encore Swiftmailer pour l’envoi de mails sont de parfaits exemples ! Enfin, Symfony permet aussi d’utiliser certaines de ces briques ailleurs. Si nous voulons par exemple utiliser le var-dumper de Symfony sur CodeIgniter ou WordPress, c’est totalement possible !
Comment parler de bundle sans parler de l’ORM Doctrine ! Doctrine est inspiré de l’ORM JavaLangage de développement très populaire ! Hibernate et se base sur le patron de conception data mapper. Officiellement devenue la bibliothèque d’ORM par défaut à partir de Symfony 1.3, Doctrine se compose de deux grandes parties :
L’une des forces de Doctrine réside dans son langage de requête orienté objet, le DQL (Doctrine Query Langage). Sa syntaxe s’inspire du HQL (Hibernate Query Langage) et permet de créer des requêtes simplement en utilisant des objets comme dans les deux exemples ci-dessous.
/** @var $user User */
$user = $this->getDoctrine()->getRepository(User::class)
->findOneBy([‘id => ‘15’]);
/** @var $users User[] */
$users = $this->createQueryBuilder(’u’)
->where(’u.firstName like :name’)
->setParameter(’name’, ’%Jonathan%’)
->orderBy(’u.createdAt’, ’DESC’)
->getQuery()
->getResult()
Doctrine peut également être utilisé avec de nombreux autres Frameworks tels que Zend Framework ou encore CodeIgniter, bien que Symfony soit celui qui l’intègre le mieux !
Ensuite, comment pouvons-nous parler de Doctrine sans parler des migrations ? Un système capable de versionner votre base de données, un outil très puissant et assez facile à utiliser !
Les migrations peuvent être écrites manuellement ou générées simplement via une commande Symfony (cf. point suivant). Ces migrations, écrites en PHP et répertoriées dans la base de données, se basent sur les entités déclarées sur Symfony. Elles permettent de modifier la base automatiquement ou encore de revenir en arrière en cas d’erreur.
Symfony embarque de nombreuses commandes via le script bin/console, des commandes créées par le composant Console. Par ailleurs, ce composant permet également de créer ses propres commandes. Une des commandes les plus connus est le fameux :
bin/console cache:clear
Il permet, comme son nom l’indique, de supprimer le cache de Symfony. Ci-dessous, voici une liste de commandes disponible, nous y retrouvons d’ailleurs les fameuses commandes Doctrine pour créer et exécuter les migrations.
Comme dit juste avant, il est également possible de créer soi-même ses commandes assez facilement. Cela peut être utile pour créer une tache CRON ou encore pour générer des utilisateurs pendant le développement. Par exemple, ci-dessous nous créons une commande d’envoi de mails.
class SendMailCommand extends AbstractCommand
{
const DAYS_BEFORE_END_DATE = [1,5];
protected function configure()
{
$this
->setName(’app:send-mail’)
->setDescription(’Sends mails for users’)
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
//TODO code Here
}
}
Puis en faisant un bin/console list, nous pouvons voir notre nouvelle commande.
Dans la continuité des commandes Symfony, le Maker Bundle vient ajouter des commandes de création aux déjà nombreuses commandes de Symfony ! A l’aide d’un bin/console make list, nous pouvons voir la liste complète des constructeurs disponibles. Par exemple la commande make:entity vous ouvrira un assistant pour créer une entité Doctrine, la commande make:migration créera automatiquement un nouveau fichier de migration avec, s’il y en a, les nouvelles modifications d’entités.
Il s’agit ici d’un des Frameworks (ou bundle) basé sur Symfony le plus connu et reconnu ! D’ailleurs, Fabien Potencier, le créateur de Symfony lui-même, nous dit « API Platform is the most advanced API platform, in any Framework or language. ». Si c’est Monsieur Symfony qui dit ça, c’est qu’il y a quelque chose !
API Platform, dont le sponsor principal est une société coopérative lilloise Les-Tilleuls.coop (encore une fois Cocorico), est une solution permettant de créer facilement et de personnaliser complètement des APIs en quelques minutes ! Parmi les fonctionnalités intéressantes d’API Platform, nous pouvons citer :
API Platform est donc une solution clé en main pour générer des APIs sécurisées rapidement.
Bien sûr, la liste des bundles et fonctionnalités incontournables de Symfony est beaucoup plus longue, il s’agit ici que d’une mise en bouche !
Outre le fait que Symfony soit un produit français, il nous offre un confort de travail non négligeable et apporte des fonctionnalités indispensables à une API web ou application classique, en plus d’être un Framework stable et simple d’utilisation. Symfony se distingue notamment par son support à long terme et sa grande communauté, ce qui permet de commencer un projet sereinement ! Pour nous développer avec Symfony, c’est un grand oui !
L’objectif de cet article est de montrer comment correctement répliquer des sessions PHP dans une application PHP distribuée entre n noeud.
Configuration des packages et début des développements d’un projet Symfony
Comparatif entre les langages Java VS PHP VS C# VS Javascript pour le développement d’une application web métier en 2021.