Skip to content

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 que phpx doctor vé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:android cherche d'abord un SDK existant (ANDROID_HOME/ANDROID_SDK_ROOT, ~/Android/Sdk, ~/Library/Android/sdk) puis un gradle déjà sur le PATH ; 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.

bash
php bin/phpx new mon-app
cd mon-app
composer install

phpx 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 :

json
"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 ​

bash
bin/phpx make:page Home /
bin/phpx serve

make: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).

bash
bin/phpx doctor

Bundler 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.

bash
# 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 release

L'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 :

bash
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.

PhpNitro est un produit FINANFA TECH — Publié sous licence MIT.