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 EGPHPUne 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 sauvetageConstruite 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 migrationCô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.
| 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);
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.
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.
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é.
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.
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/ordersNouvelle application Migrée -
/accountNouvelle application Migrée -
/checkoutNouvelle application En test -
/reportsAncienne application En attente -
/adminAncienne application En attente
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.