Retour à expertise technique

Qu’est-ce qu’un framework ?

Pour développer une plateforme web (site web, extranet, e-commerce …), vous avez le choix entre :

  • Un développement maison de A à Z en utilisant le langage dans son plus simple appareil, en démarrant d’une page blanche
  • Utiliser un CMS du marché si votre projet correspond bien aux fonctionnalités proposées
  • Ou utiliser un framework, entre le développement de zéro et le CMS

Concrètement, le framework va tirer les avantages des deux autres solutions :

  • Ne pas réinventer la roue grâce à des briques métier prêtes à l'emploi (Système de routing, injection de dépendances, gestion des assets, système de cache, …).
  • Rester libre dans le développement des fonctionnalités et l’évolution future de la plateforme réalisée.

Un framework PHP est constitué de plusieurs composants qui cohabitent parfaitement entre eux et forment une base de développement solide.

Développement PHP Symfony

Quels avantages à utiliser un framework comme Symfony ?

Une organisation propre du projet: le framework Symfony impose des normes et conventions

Grâce aux normes et conventions que chaque développeur sur un projet Symfony doit respecter, on obtient une organisation solide des fichiers et du code. Les avantages sont multiples :

  • Les développeurs Symfony qui maîtrisent le framework pourront facilement intégrer un projet développé à partir du framework, contrairement à un projet développé en PHP “maison”, où il n’y’a pas de normes ni règles imposées. Dans ce dernier cas, la phase d’apprentissage et reprise du code existant peut demander un effort conséquent pour le nouveau développeur intégrant le projet.
  • Les fichiers doivent respecter une syntaxe particulière et doivent se trouver au bon endroit dans l’arborescence du projet. Cela garantit une facilité de maintenance sur le long terme, les développeurs savent rapidement dans quel fichier il faut aller pour apporter des modifications.
  • L’architecture MVC (Modèle Vue Contrôleur) permet de découper le code représentant la logique métier de l’application et le code de présentation des vues. Ainsi, un intégrateur web voir même un webdesigner n’aura aucun mal à intervenir sur la partie présentation (vues) du projet, sans avoir à intervenir sur des fichiers PHP complexes.
  • Favorise la réutilisation de code, la création de tests automatisés (tests unitaires avec phpUnit ou Atoum et tests fonctionnels avec phpUnit ou Behat) et le respect des recommandations PHP-FIG (Des recommandations mondiales pour une meilleure interopérabilité entre les projets web PHP). Symfony permet donc de produire du code de qualité.

Sécurité et performances au rendez-vous

Un bon framework PHP prend au sérieux les questions de sécurité web et de performance.

La sécurité dans le framework Symfony

Symfony intègre des mesures de sécurité préventives pour lutter contre les failles et attaques XSS, CSRF et injection SQL. Contrairement à un développement PHP maison où il faut penser systématiquement à protéger chaque requête, formulaire … Symfony embarque systématiquement ces mécanismes de sécurité, sans avoir à les implémenter à chaque fois.

Autre avantage du développement d’un projet web sur mesure à l’aide du framework comparé à l’utilisation d’un CMS du marché (comme WordPress, Drupal ou Joomla), il va être moins ciblé par les hackers qui concentrent leurs efforts sur les CMS répandus sur le web et dont l’architecture et les URLs sont prédictibles.

Sécurité Symfony
Performances et cache Symfony

Performances et cache sous Symfony

De base, le framework est rapide, d’autant plus combiné avec PHP 7. Mais son plus gros avantage réside dans les possibilités d'amélioration des performances qu’il offre nativement :

  • Optimisation du code pour les “byte code cacher” comme APC ou OPcache permettant d’éviter de recompiler le code PHP à chaque appel et donc pouvoir afficher plus rapidement les pages du site.
  • Fonctions de cache HTTP natives permettant de mettre en place facilement une stratégie de cache côté visiteur et côté serveur.

Une communauté de développeurs importante

Symfony est un framework reconnu dans le monde et présent dans le TOP 3 mondial des frameworks PHP open source. Une des grandes forces du framework est sans aucun doute sa forte communauté internationale.

Une forte communauté autour d’un framework va apporter :

  • Une fiabilité du code des composants du socle: La communauté fait un réel travail de qualité et d’amélioration du code notamment à travers les pull request du projet Github..
  • La création et mise à disposition de Bundles (plugins) open source permettant de gagner du temps dans le développement. On retrouve plus de 3000 bundles open source actifs sur Symfony (en 2016).
  • Une documentation complète et à jour
  • Des personnes qui peuvent vous dépanner en cas de problème sur votre projet Symfony via des plateformes comme Stackoverflow, Slack, forums de développeurs …
  • De nombreux articles présentant des astuces et retours d’expérience intéressants pour faire les bons choix d’architecture ou techniques.
Communauté développeurs Symfony

Recrutement et marché de l’emploi

Si vous faites développer votre projet par une agence web symfony, il est important de vous assurer qu’il est possible d’internaliser à terme votre projet. En utilisant un framework comme Symfony, vous êtes certains de pouvoir trouver des développeurs Symfony sur le marché qui pourront rapidement le prendre en main.
Le nombre d’offre d’emploi symfony sur le marché est un bon indicateur sur la fiabilité de la technologie et son adoption massive.

Symfony pour quel type de projet web professionel ?

Symfony est-il adapté à votre projet ?

En pratique, le framework peut répondre à tous types de projets web, API, outils métiers …

Concevoir des landing pages promotionnelles avec Symfony ?
Non !

Que ce soit pour réaliser des landing pages ou des sites statiques, Symfony n’est pas forcément la bonne solution. Dans ce cas précis, il est plus intéressant de partir sur un micro-framework comme Silex (basé sur les composants Symfony) qui aura l’avantage de proposer un système de routing dynamique, de les concevoir en PHP maison ou en HTML/CSS/JS statique.

Utiliser Symfony pour la création d’un site vitrine ?
Oui et non ...

Tout dépend du type de site vitrine, si ce dernier apporte une dimension dynamique plus complexe qu’une gestion d’articles, de pages de contenus ou qu’un formulaire de contact, il peut y avoir un intérêt. Par exemple, si vous adossez un système d’espace client, une interconnexion avec un système informatique comme un ERP / CRM, un formulaire avancé, du paiement en ligne … Dans ces cas, il peut y avoir une plus-value à utiliser Symfony.

Dans le cas contraire, privilégiez l’utilisation d’un CMS comme Wordpress, Drupal (dont la version 8 repose sur les composants Symfony), ou encore Bolt, un CMS basé sur Symfony (qui vous permettra plus de souplesse pour vos évolutions futures).

Pour le développement d’un espace connecté de type Intranet ou Extranet ?
Oui !

Symfony répond totalement au besoin pour la création d’intranet ou extranet. Le système de rôles et de gestion des utilisateurs embarqué permet de développer rapidement une plateforme de ce type avec personnalisation des droits d’accès et rôles de chacun…

Dans le cadre de la réalisation d’un outil métier avec des workflows complexes ?
Oui !

Pour réaliser des outils métiers, que ce soit des ERP ou CRM sur mesure, comme des outils sur mesure pour optimiser des tâches quotidiennes dans une entreprise, Symfony est parfaitement adapté.

On dit souvent de Symfony qu’il s’agit d’un des frameworks PHP open source les plus adapté pour le monde professionnel de part sa robustesse, sa stabilité et sa modularité (très important pour ce type de projet en constante évolution), ce qui en fait un framework de choix pour ce type de projet.

Pour créer une API ou des webservices ?
Oui !

Symfony étant basé sur une architecture HTTP, son utilisation est idéale pour créer des webservices RESTful. Tout est natif dans le framework, de la conception des endpoints jusqu’à la sécurité des accès. Il est possible d’aller plus loin grâce à des bundles open source dédiés qui pourront être intégrés dans le projet.

Et pour une plateforme avec de fortes contraintes de temps réel ?
Oui et non …

Si le projet demande des échanges temps réel comme un système de chat live, une plateforme de jeux vidéos, de statistiques financières / bourse … Symfony n’est pas la solution la plus adaptée. Il est préférable de partir sur une solution de type Node.js / Socket.io qui pourra traiter plus facilement cette problématique.

Toutefois, Symfony peut être utilisé comme socle backend et couplé à une API, tout en utilisant pour la partie frontend des technos plus adaptées comme Node, React.js ou Angular.js.