Qu'est-ce que PhpNitro ?
PhpNitro est un framework qui compile un arbre de widgets écrit en PHP vers de vrais écrans mobiles natifs. Pas de WebView, pas de HTML/CSS dans le pipeline de rendu : un vrai runtime PHP, cross-compilé via le NDK, tourne sur l'appareil, calcule une passe de layout à contraintes puis une passe de peinture, et envoie le résultat — une liste plate de commandes de dessin JSON — à un client Kotlin qui les rejoue sur un vrai android.graphics.Canvas (Skia). Si tu sais écrire du PHP, tu sais écrire un écran natif.
Ce qui arrive d'habitude à un dev PHP qui doit livrer une app mobile
Le brief tombe : "il nous faut une appli mobile". Le backend existe déjà, en PHP, souvent depuis des années. Trois chemins s'ouvrent alors, et aucun ne part de ce qui est déjà là.
Le premier : apprendre Dart et l'écosystème Flutter en entier — un nouveau langage, un nouveau moteur de widgets, une nouvelle façon de penser l'état, pour une équipe qui n'en avait pas besoin la semaine dernière. Le deuxième : apprendre React Native, donc React si ce n'est pas déjà fait, puis composer avec un pont JS↔natif qui a ses propres subtilités. Le troisième, le plus tentant sur le papier : empaqueter le site existant dans une WebView et appeler ça une app. Ça marche, jusqu'au jour où il faut un vrai accès caméra, un capteur biométrique, une notification qui réveille l'app en arrière-plan — et la WebView montre sa limite : elle n'a jamais été conçue pour ça.
PhpNitro part d'une autre question : et si le PHP qui tourne déjà sur le serveur pouvait tourner directement sur le téléphone, avec un vrai pont vers les capacités natives, sans repartir de zéro dans un autre langage ? C'est un pari architectural assumé (voir l'architecture pour le détail, sans enjoliver), pas une promesse que tout est déjà réglé.
Face à Flutter et React Native
Une comparaison honnête, pas un tableau à sens unique : PhpNitro est jeune, Flutter et React Native sont matures et déployés en masse depuis des années.
| PhpNitro | Flutter | React Native | |
|---|---|---|---|
| Langage | PHP | Dart | JavaScript / TypeScript |
| Modèle d'exécution | Runtime PHP embarqué, un cycle layout+peinture par requête HTTP locale | Arbre de widgets en mémoire, VM Dart compilée AOT | Pont JS ↔ vues natives (bridge / JSI) |
| Rendu | Commandes JSON rejouées sur un vrai Canvas Android — déjà backé par Skia au niveau OS | Moteur Skia embarqué par le runtime lui-même (indépendant de l'OS) | Vues natives réelles pilotées depuis JS |
| Hot reload, état préservé | Non — re-fetch complet à la prochaine interaction | Oui | Oui (Fast Refresh) |
| iOS | Moteur de rendu (Core Graphics) écrit et testé en CI, PHP embarqué pas encore vérifié sur device | Mature, en production | Mature, en production |
| Écosystème de packages | Tout jeune (phpnitro/* sur Packagist) | pub.dev, immense | npm, immense |
| Accessibilité (lecteur d'écran) | Arbre de nœuds virtuel, confirmé sur device réel (14 nœuds exposés via uiautomator) | Complète (Semantics) | Complète (composants natifs) |
| Le plus adapté pour | Une équipe/dev PHP qui veut une app sans changer d'écosystème | Une UI très personnalisée, cross-platform, équipe dédiée mobile | Une équipe déjà React/JS qui réutilise ses compétences web |
Par où commencer ?
- Installation — Prérequis, scaffold d'un nouveau projet avec
phpx new, serveur de dev, build Android. - Guides — Créer une page/entité, composer un écran avec les widgets
Native*, publier sur Android. - Référence — Toutes les commandes
phpx, la structure d'un projet. - Architecture — Le cycle de rendu en détail, et l'état honnête du projet face à Flutter/React Native.
- Widgets — Catalogue complet des ~58 classes du moteur de rendu.
- Packages phpnitro/* — Les 22 packages publiés sur Packagist, au-delà des 6 inclus par défaut.
- PhpNitro Go — L'équivalent Expo Go de PhpNitro : prévisualise ton app sans recompiler.
- Desktop — Linux, macOS, Windows : où en est chaque chantier, honnêtement.