Installation
Prérequis
Pour écrire et faire tourner un projet en local :
- PHP ≥ 8.1 avec les extensions
pdo_sqlite,curl,mbstring,json,tokenizer,zip(celles quephpx doctorvérifie). - Composer, pour résoudre les packages
phpnitro/*publiés sur Packagist.
Pour compiler un APK réel, en plus :
- JDK (17 recommandé) — requis par Gradle.
- Android SDK et Gradle ≥ 8.9 — tu n'as rien à installer toi-même à l'avance :
phpx build:androidcherche d'abord un SDK existant (ANDROID_HOME/ANDROID_SDK_ROOT,~/Android/Sdk,~/Library/Android/sdk) puis ungradledéjà sur lePATH; si rien n'est trouvé, il télécharge lui-même les command-line tools Android et une distribution Gradle épinglée dans~/.local/share/phpnitro-tools/(ou$XDG_DATA_HOME), une seule fois, réutilisées ensuite par tous tes projets.
TIP
Aucune étape de build côté site/documentation : PhpNitro lui-même n'a ni bundler JS, ni framework front, ni Node — la seule compilation réelle est celle d'un APK Android via Gradle, entièrement pilotée par phpx.
Créer un nouveau projet
phpx est le CLI du framework (comparable à flutter ou artisan) — installé une fois, il scaffolde autant de projets que nécessaire depuis son propre checkout du framework (lib/, ios/, assets/, public/, android/app/ servent de gabarit), sans jamais imbriquer un projet dans le framework lui-même.
php bin/phpx new mon-app
cd mon-app
composer installphpx new écrit un composer.json frais qui déclare les packages du framework comme de vraies dépendances Packagist plutôt que de copier leur code source :
"require": {
"php": ">=8.1",
"phpnitro/ui": "^1.0",
"phpnitro/database": "^1.0",
"phpnitro/firebase": "^1.0",
"phpnitro/countries": "^1.0",
"phpnitro/preferences": "^1.0",
"phpnitro/format": "^1.0",
"symfony/http-foundation": "^8.1",
"symfony/dotenv": "^8.1",
"symfony/yaml": "^8.1"
}Côté Android, le projet scaffoldé référence com.github.phpnitro:android-engine via JitPack dans android/settings.gradle.kts/build.gradle.kts — exactement la relation qu'un projet Flutter a avec le SDK Flutter : référencé, jamais copié comme code source dans ton propre dépôt.
Serveur de développement
bin/phpx make:page Home /
bin/phpx servemake:page crée lib/pages/HomePage.php (un écran natif minimal) et son contrôleur backend jumeau, et enregistre les deux routes automatiquement. serve synchronise assets/ vers public/assets/, synchronise APP_NAME de .env depuis phpnitro.yml, puis lance php -S 127.0.0.1:8090 sur public/ (port personnalisable : bin/phpx serve 8091).
Ouvre http://127.0.0.1:8090/ — pas de build step, pas d'émulateur requis pour développer un écran ; l'app Android réelle (NativeRenderPocActivity) pointe vers ce même serveur pendant le développement.
Vérifier son installation
phpx doctor — le même rôle que flutter doctor : liste PHP/extensions/Composer (requis) puis Java/Gradle/Android SDK/adb (seulement nécessaires pour build:android/dev:push, jamais installés par cette commande elle-même, juste signalés manquants).
bin/phpx doctorBundler et builder l'APK
bundle:android recopie (et minifie) public/, lib/pages/, lib/backend/src/ et chaque packages/*/src résolu par Composer dans android/app/src/main/assets/www/, avec un composer.json propre et composer install --no-dev exécuté à l'intérieur de ce dossier de staging — c'est ce que l'APK embarque réellement.
# Bundle seul (staging Android sans compiler l'APK)
bin/phpx bundle:android
# Bundle + gradle assembleDebug|assembleRelease (installe Gradle/le SDK
# au premier lancement si besoin, voir phpx doctor)
bin/phpx build:android debug
bin/phpx build:android releaseL'APK généré : android/app/build/outputs/apk/<variant>/app-<variant>.apk.
En développement sur un device réel branché en USB (adb), dev:push pousse le PHP directement dans le files/www de l'app déjà installée et déclenche un rechargement de l'écran courant — sans gradle assemble, sans adb install, sans perdre la pile d'écrans en cours :
bin/phpx dev:push
bin/phpx dev:push --watch # repousse automatiquement à chaque fichier modifiéPour aller plus loin sur chaque commande, direction la page Guides puis la Référence.