Frameworks PHP

Chaque framework PHP excelle dans un domaine.

Nous développons, sauvons et hébergeons des applications dans chacun d'eux – et en PHP pur qui n'a jamais eu de framework – avec une équipe qui écrit du PHP depuis vingt-cinq ans.

Quel framework pour votre projet

Répondez à deux questions. Chaque chemin aboutit à notre point de départ – et indique quand nous choisirions autre chose.

De quoi partez-vous ?

Un nouveau projet

Qu'est-ce qui compte le plus ?

Un grand système sur lequel plusieurs équipes travailleront pendant des années

Par où nous commencerions

Symfony

Une configuration explicite, un conteneur d'injection de dépendances, des versions à support long terme et Doctrine pour les données. La structure tient toujours quand le cinquième développeur arrive.

Envisagez aussi Laminas si l'entreprise exploite déjà du code Zend Framework.

Un produit qui doit sortir vite, avec une petite équipe

Par où nous commencerions

Laravel

Authentification, files d'attente, e-mails, planification et un ORM expressif prêts à l'emploi, avec une seule convention pour l'ensemble.

Laravel chez EGPHP
Une API ou un petit service avec une seule mission

Par où nous commencerions

Slim

Routage, middleware et requêtes PSR-7 standard, et rien que vous n'ayez demandé. Vous choisissez la couche de données et le conteneur.

Si l'API doit devenir un produit complet, Laravel ou Symfony vous épargne une refonte plus tard.

Une petite application sur un serveur modeste

Par où nous commencerions

CodeIgniter

Une faible empreinte, peu de configuration et une documentation claire. Il tourne bien là où les ressources sont limitées.

Beaucoup d'écrans de données, construits vite à partir de la base

Par où nous commencerions

Yii · CakePHP

Yii génère les modèles et les écrans CRUD avec Gii ; CakePHP les génère à partir de ses conventions. Tous deux transforment rapidement un schéma en écrans fonctionnels.

Le moins de surcharge possible à chaque requête

Par où nous commencerions

Phalcon

Le framework est une extension C compilée : très peu de PHP s'exécute par requête. Cette extension doit être installée sur le serveur – nous l'installons sur les nôtres.

Beaucoup d'hébergements mutualisés n'autorisent pas les extensions PHP. Vérifiez avant de le choisir.

Une application qui existe déjà

Sur quoi est-elle construite ?

Du PHP pur sans framework, ou une très vieille version de PHP

Par où nous commencerions

Sauvetage d'abord

Nous la sécurisons et la mettons à jour avant toute chose, puis nous décidons ensemble si un framework en vaut la peine.

Comment se passe un sauvetage
Construite sur un framework, et elle fonctionne

Par où nous commencerions

Garder le framework

Nous la mettons à niveau, la sécurisons et l'enrichissons dans le framework où elle a été écrite. Une réécriture est le dernier recours, pas le premier.

Construite sur un framework que vous voulez quitter

Par où nous commencerions

Migrer par étapes

L'ancienne et la nouvelle application tournent côte à côte, et les routes passent de l'une à l'autre une par une pendant que l'activité continue.

Comment se passe une migration

Côte à côte

Ce qu'est chaque framework, là où il excelle et quand nous y réfléchirions à deux fois. Aucun n'est mauvais ; chacun convient à un travail différent.

Comparatif des frameworks PHP
Framework Ce que c'est Couche de données Point fort À reconsidérer si
Symfony Framework full-stack et composants réutilisables Doctrine ORM Les grands systèmes durables, avec des versions à support long terme Un petit site doit être lancé cette semaine
Laravel Framework full-stack Eloquent Livrer un produit vite, avec files d'attente, authentification et e-mails intégrés Vous voulez câbler chaque pièce explicitement
CodeIgniter Framework full-stack léger Constructeur de requêtes et modèles simples Une faible empreinte sur des serveurs modestes Le projet a besoin d'un vaste écosystème de paquets
Yii Framework full-stack Active Record Écrans riches en données générés avec Gii, et mise en cache Votre équipe ne le connaît pas ; sa communauté est plus petite
CakePHP Framework full-stack CakePHP ORM Convention plutôt que configuration, et code généré à partir du schéma L'application se heurte à ses conventions à chaque étape
Laminas Composants, frameworks MVC et middleware ; le successeur de Zend Framework laminas-db ou Doctrine Les systèmes métier déjà construits sur Zend Framework Un petit projet neuf veut avancer vite
Slim Micro-framework Aucune intégrée – à vous de choisir API et petits services L'application a besoin de sessions, de formulaires et d'une interface d'administration dès le premier jour
Phalcon Framework full-stack livré sous forme d'extension C ORM de Phalcon avec PHQL Très faible surcharge par requête Votre hébergeur ne peut pas installer d'extensions PHP

Laravel lui-même repose sur plusieurs composants Symfony, et la plupart de ces frameworks partagent les mêmes normes PSR – déplacer du code de l'un à l'autre demande moins de travail qu'il n'y paraît.

Du vieux PHP remis en forme

Du code écrit il y a des années rapporte encore de l'argent à beaucoup d'entreprises. Nous le sécurisons et le mettons à jour sans l'éteindre.

- $id = $_GET['id'];- $r = mysql_query("SELECT * FROM orders WHERE id = $id");- $order = mysql_fetch_assoc($r);+ $stmt = $pdo->prepare('SELECT * FROM orders WHERE id = ?');+ $stmt->execute([(int) $_GET['id']]);+ $order = $stmt->fetch(PDO::FETCH_ASSOC);
Les fonctions mysql_ ont été supprimées en PHP 7. Ce seul changement fait tourner la page sur un PHP actuel et ferme en même temps une faille d'injection SQL.
  1. La lire et la faire tourner

    Une copie de l'application qui tourne sur un serveur actuel, et une liste écrite de ce qui casse.

  2. Des tests autour de ce qui marche

    Des tests qui enregistrent ce que font les pages aujourd'hui, pour qu'un changement qui en casse une soit repéré aussitôt.

  3. PHP mis à niveau par étapes

    Une version à la fois, avec Rector pour les changements mécaniques et PHPStan pour trouver ce qui lui a échappé.

  4. La sécurité d'abord

    Requêtes préparées, sorties échappées, mots de passe re-hachés, sessions et envois de fichiers verrouillés.

  5. Puis, si c'est rentable, un framework

    Les nouvelles fonctionnalités vont dans un framework à côté de l'ancien code, et les anciennes pages migrent au fil des modifications.

Changer de framework, une route à la fois

Nous n'arrêtons pas l'activité pour une réécriture. L'ancienne et la nouvelle application sont derrière un même serveur web, et chaque route bascule quand sa remplaçante est prête.

  • /api/orders Nouvelle application Migrée
  • /account Nouvelle application Migrée
  • /checkout Nouvelle application En test
  • /reports Ancienne application En attente
  • /admin Ancienne application En attente
Un exemple de migration, à mi-parcours.

La bascule tient en une ligne par route

# nginx
location /api/orders { proxy_pass http://new; }
location /account    { proxy_pass http://new; }
location /checkout   { proxy_pass http://new; }
location /           { proxy_pass http://old; }

Une route qui pose problème revient à l'ancienne application avec la même modification d'une ligne, le temps que nous la corrigions.

Dites-nous ce que vous faites tourner

Le framework, la version de PHP et ce qui vous inquiète suffisent pour commencer. Chaque projet fait l'objet d'un devis après un court échange.