
Partager:
Acteur de formation avec une thèse sur la comédie, je suis venu au développement PHP par le biais de la scène des rencontres. Vous pouvez me trouver en train de parler et d'écrire sur la technologie, ou de jouer/acheter des disques bizarres de ma collection de vinyles.
Science étrange : Construire des applications Android avec NativePHP
Il semble que je sois coincé dans une boucle en ce moment, cette boucle étant de parler des innovations en PHP. L'un de mes problèmes est que je n'arrive pas à suivre les nouveautés qui apparaissent en PHP à cause du rythme de l'évolution.
Je suis en train de rattraper mon retard. J'ai assisté au lancement de NativePHP à Laracon US 2023 a suffi à faire lever un sourcil, mais je pense qu'à ce moment-là, je n'étais pas tout à fait sûr, dans ces premières étapes, de l'ampleur de l'engouement qu'il susciterait.
Nous sommes en 2026, et au début de l'année, les créateurs de NativePHP Simon Hamp et Shane Rosenthal ont donné un aperçu de l'année à venir. J'ai été ravi d'apprendre que NativePHP sera annoncé comme gratuit à Laracon Inde dans un mois. Ensuite, j'ai pu voir le nouveau processus de construction en utilisant l'application Jump app. La démo de Jump et du PaaS Bifrost comporte tellement de fonctionnalités que je n'arrive pas à suivre. Vient ensuite Mimiun IDE AI pour NativePHP.
Nous allons suivre un tutoriel dans cet article ; nous allons coder une application To-Do classique, avec une petite fonction sympa qui envoie un SMS à un appareil choisi via l'API Vonage Messages API. Ensuite, NativePHP va construire l'application et l'intégrer dans le paquetage grâce à son outil et l'exécuter sur Android.
Qu'est-ce que NativePHP ? Un entretien avec ses créateurs
NativePHP est conçu pour prendre en charge Laravel et de les construire pour qu'elles s'exécutent nativement sur les appareils cibles : Windows, Linux, MacOS, Android, iOS. Il a connu une évolution progressive de ses fonctionnalités, c'est pourquoi j'ai pensé qu'il serait préférable de poser quelques questions à ses créateurs afin d'en savoir plus avec leurs propres mots.
Shane and Simon, NativePHP's creators
Comment l'idée de NativePHP est-elle née et a-t-elle évolué pour devenir ce qu'elle est aujourd'hui ?
NativePHP a commencé comme une enveloppe autour d'Electron pour les applications de bureau. Nous avons construit cela pendant plus de 3 ans (Mac, Linux, Windows). En 2024, Simon a déchiffré le code et compilé PHP pour iOS afin que nous puissions utiliser le code PHP sur l'appareil, de manière native. Peu après, Shane a fait de même pour Android, et nous n'avons cessé de repousser les limites depuis.
Sur desktop, nous utilisons des binaires PHP compilés statiquement et (pour l'instant) le serveur web intégré de PHP pour permettre la communication avec le shell Electron. Mais cela ne fonctionne pas sur mobile, en particulier sur iOS. Il n'est pas possible d'avoir des applications avec de multiples processus en arrière-plan ou de faire tourner des serveurs web à tout moment.
Dans une configuration normale de serveur web, PHP est généralement compilé dynamiquement, ce qui permet de charger et de décharger les extensions au moment de l'exécution, mais bien que cela soit hautement configurable, c'est plus complexe, ce qui rend la distribution du moteur PHP plus difficile.
Les binaires statiques signifient que vous n'avez pas besoin d'"installer" ou de "configurer" PHP ; vous pouvez simplement distribuer un seul exécutable pour la plate-forme donnée et le faire fonctionner de la manière dont il a été compilé. Toutes les extensions dont vous avez besoin doivent être compilées, il n'est donc pas aussi facile de les modifier, mais une fois que vous l'avez compilé pour la plateforme concernée, tout fonctionne. PHP bénéficie même d'une légère amélioration des performances, car il n'a pas besoin d'effectuer certaines vérifications qui peuvent être plus lentes lors du chargement de bibliothèques dynamiques.
Mais le grand déblocage est venu de la prise de conscience que - dans sa forme la plus simple - PHP (le moteur) n'est qu'un analyseur. Il est conçu pour analyser du code PHP, et il est très bon pour cela. Qui l'eût cru ? C'est juste un très bon interpréteur, très rapide, qui peut lire et traiter des fichiers PHP très rapidement.
Nous créons généralement des frameworks web, mais il n'y a rien dans PHP qui l'oblige à être utilisé uniquement dans ce contexte. En fait, depuis de nombreuses années, PHP est un très bon outil d'interface de programmation, et de nombreuses applications s'appuient sur son support robuste de l'interface de programmation.
Une caractéristique peu connue de PHP, cependant, est qu'il peut également être compilé comme une bibliothèque C intégrable, ce qui signifie que vous pouvez inclure le moteur PHP à l'intérieur de n'importe quelle autre application. Une fois ce détail technique réglé, nous avons pu compiler PHP dans nos applications shell Swift et Java/Kotlin et leur faire exécuter une application Laravel embarquée.
Grâce à une extension PHP personnalisée très légère qui ajoute quelques nouvelles fonctions PHP globales, vos scripts PHP, lorsqu'ils sont exécutés sur iOS et Android, ont un accès complet aux fonctionnalités de l'appareil.
Cela signifie que vous pouvez désormais créer des applications mobiles natives entièrement distribuables, offline-first et multiplateformes à l'aide de PHP et Laravel et de tous les autres outils auxquels vous êtes habitués dans le monde du développement web.
Et ce n'est qu'un début !
Au Laracon India 2026, NativePHP a été annoncé comme étant gratuit. Comment pouvez-vous faire cela ?
Nous avons annoncé une tonne de choses ! La plus importante est que le coeur de NativePHP for Mobile est maintenant entièrement gratuit et open sourceafin que tout le monde puisse l'utiliser pour créer des applications mobiles pour iOS et Android. Nous l'appelons NativePHP Air.
L'autre élément important est Les plugins. Nous avons ouvert l'architecture pour permettre à quiconque de construire n'importe quoi. Et vous pouvez vraiment exploiter n'importe quelle fonctionnalités natives de l'appareil. Nous avons quelques plugins premium de première partie qui, nous l'espérons, aideront à financer le projet (mais ils ne sont en aucun cas obligatoires). La plupart des plugins sont également gratuits et open source, et nous avons l'intention d'en créer beaucoup, beaucoup plus.
Nous avons également un marché des plugins pour permettre aux développeurs tiers de partager leurs propres plugins et, dans les semaines à venir, nous donnerons aux développeurs tiers la possibilité de vendre leurs propres plugins premium sur notre place de marché.
Dès le début, nous voulions rendre NativePHP gratuit, mais nous n'avions que le produit de base à l'époque, et il n'y avait donc aucun moyen de financer son développement. En en faisant un produit premium dès le début, nous avons pu réunir suffisamment de capitaux pour développer d'autres offres, en particulier Bifrost.
Avec le succès des abonnements à Bifrost, couplé à nos plugins premium, nous avons été en mesure de faire le saut vers la gratuité du noyau bien plus tôt que nous ne l'avions initialement rêvé. Nous espérons que la communauté continuera à nous soutenir avec ces autres produits pour aider à compenser les coûts de développement et de maintenance des outils gratuits.
Pouvez-vous expliquer la différence entre NativePHP et Bifrost ?
NativePHP est le framework, comme Laravel ; Bifrost est le SaaS, plutôt comme Laravel Forge ou Laravel Cloud. Bifrost est une plateforme basée sur le cloud qui facilite le processus de compilation de vos applications pour plusieurs plateformes en parallèle, puis la publication des builds sur les app stores.
Une partie des annonces faites en Inde concernait également des fonctionnalités de Bifrost : Jump et Mimi.
Jump est une application native gratuite que vous installez sur votre téléphone (fonctionne pour iOS et Android) et qui vous permet de déployer vos applications NativePHP directement sur votre téléphone depuis votre machine de développement (ou depuis vos projets Bifrost) sans avoir besoin de compiler ou de provisionner. Vous n'avez pas besoin de Xcode ou d'Android Studio. Avec Jump fonctionnant sur votre appareil et NativePHP Air installé dans votre application Laravel, il suffit d'une commande pour faire fonctionner votre application sur votre téléphone.
Mimi est la dernière pièce du puzzle, vous permettant de créer des applications sans aucun environnement de développement local. En utilisant des modèles d'IA agentique de pointe que nous avons configurés spécifiquement pour fonctionner avec NativePHP, nous vous permettons de créer vos applications plus rapidement que jamais. Et parce qu'il fait partie de Bifrost, vous pouvez les rendre prêtes pour l'app store en quelques minutes.
Nous consacrons beaucoup d'efforts à Bifrost et nous avons prévu de nombreuses autres fonctionnalités pour la fin de l'année.
Quelles sont les fonctionnalités prévues qui vous enthousiasment le plus ?
(Shane) En haut de ma liste, il y a le rendu d'une interface utilisateur native. Nous avons étudié nos concurrents (Meta et Google), et certaines des stratégies qu'ils ont mises en œuvre, et nous sommes pleinement convaincus que nous pouvons offrir une solution au moins aussi bonne (si ce n'est légèrement meilleure), adaptée au développeur Laravel/PHP.
(Simon) Je suis très enthousiaste à l'idée de me plonger dans les performances de NativePHP. C'est déjà un choix solide pour construire des applications mobiles étonnantes, mais nous voulons en faire le meilleur choix. Nous avons déjà quelques PoCs fonctionnels pour des choses comme le multithreading, les tâches en arrière-plan et la parallélisation. Nous voulons simplement continuer à repousser les limites et à faire des choses que les gens disent ne pas pouvoir ou ne pas devoir faire.
Je suis également enthousiaste à l'idée de transposer toutes les avancées que nous avons réalisées dans le domaine de la téléphonie mobile au domaine des ordinateurs de bureau et de nous débarrasser éventuellement d'Electron. Nous pourrions alors nous retrouver avec un outil véritablement multiplateforme pour les applications web et natives.
Construire une application Laravel To-Do avec des notifications par SMS
J'ai un appareil Android, et il s'agira d'une application ToDo. Cependant, pour ajouter une petite touche de fonctionnalité supplémentaire, je veux qu'elle soit d'abord stylisée à l'aide de la technologie MaterialUIet qu'elle envoie un SMS via l'API Messages de Vonage chaque fois qu'un élément est coché.
Je l'ai fait en Claude & curseur en utilisant Laravel Boost - pour la plupart (il a vraiment lutté avec le conteneur de service en utilisant l'injection de dépendance pour le client PHP de Vonage PHP Client), tout s'est bien passé. Rien d'extraordinaire - toutes les authentifications ont été supprimées, j'ai mis en place une entité ToDo en Eloquentet Livewire a géré l'état ToDo dans le frontend.
Vous pouvez trouver le code source de l'application ici
Quick and dirty UI for a classic mobile appC'est très bien. Vérifiez vous-même.
Conditions préalables
git
PHP 8.3+
Node 23+ & npm
Compositeur
Un Account Vonage
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Configuration de l'application Web
Récupérez le dépôt sur votre machine : https://github.com/Vonage-Community/blog-messages_native_php
Installer les dépendances :
composer installExécuter les migrations :
php artisan migrateLancer npm :
npm iDans la ligne de commande, lancez Vite avec
npm run devCopier l'exemple
envpour en faire unenv: cp .env.example .envAjoutez vos informations d'identification Vonage au fichier
.envfichier.
Pour réaliser la dernière étape, vous devrez créer une nouvelle application dans le tableau de bord de Vonage, ajouter la capacité API Messages à l'application (vous pouvez placer des données factices dans la section webhooks, car cette fonction n'est pas utilisée), et déplacer le fichier téléchargé private.key à la racine du code de votre projet. Notez l'ID de l'application qui est créée.
Pour créer une application, allez à la page Créer une application sur le tableau de bord de Vonage, et définissez un nom pour votre application.
Si vous avez l'intention d'utiliser une API qui utilise des Webhooks, vous aurez besoin d'une clé privée. Cliquez sur "Générer une clé publique et privée", votre téléchargement devrait démarrer automatiquement. Conservez-la en lieu sûr ; cette clé ne peut pas être retéléchargée si elle est perdue. Elle suivra la convention de nommage suivante private_<votre identifiant d'application>.key. Cette clé peut maintenant être utilisée pour authentifier les appels à l'API. Remarque : votre clé ne fonctionnera pas tant que votre application n'aura pas été sauvegardée.
Choisissez les fonctionnalités dont vous avez besoin (par exemple, Voice, Messages, RTC, etc.) et fournissez les webhooks requis (par exemple, URL d'événement, URL de réponse ou URL de message entrant). Ces éléments seront décrits dans le tutoriel.
Pour sauvegarder et déployer, cliquez sur "Générer une nouvelle application" pour finaliser la configuration. Votre application est maintenant prête à être utilisée avec les API de Vonage.
Vous pouvez ensuite insérer ces valeurs dans le fichier .env par exemple :
VONAGE_APPLICATION_ID="<YOUR_APPLICATION_ID_HERE>"
VONAGE_PRIVATE_KEY_PATH="./private.key"
VONAGE_TO="<YOUR-NUMBER-HERE>"Vous devrez servir votre application. Je recommande d'utiliser Laravel Herd. Vous pouvez trouver les instructions d'installation ici. Vous pouvez également exécuter le serveur PHP intégré à partir de la ligne de commande : php artisan serve
Votre application de base devrait maintenant être opérationnelle. Il est maintenant temps de...
Exécuter l'application sur Android avec NativePHP Jump
Il n'y a que quatre étapes à suivre pour que cela fonctionne sur Android. Quatre étapes! C'est tout. C'est parti :
Sur votre appareil Android, téléchargez l'application l'application Bifrost Jump. Celle-ci agit comme un wrapper qui peut tirer une application construite en NativePHP à partir d'un code QR.
Installer NativePHP avec Composer :
composer require nativephp/mobileCréez votre application pour l'application Jump :
php artisan native:jumpUn navigateur démarré avec un code QR s'affiche automatiquement. Ouvrez l'application Jump sur votre téléphone et scannez le code QR.
R U Being Serious Right Now?L'application mobile ToDo est maintenant prête à être utilisée. Il est temps de cocher un élément ToDo, et voyons ce qui se passe...
Envoi de SMS à partir d'Android à l'aide de l'API Messages de Vonage
SMS delivered Natively from Android via. VonageNous recevons un SMS sur notre téléphone lorsque nous cochons une tâche dans l'application ! Je ne suis généralement pas un partisan du "ça marche tout seul", surtout lorsque j'écris sur l'expérience du développeur, où il y a souvent une tonne de connaissances présumées ou de pièces manquantes. Mais là, ça a... marché tout simplement fonctionné.
Quelle est la prochaine étape ?
Maintenant que vous avez vu à quel point il est facile de construire de vraies applications mobiles avec PHP, qu'allez-vous construire vous-même ? J'ai pensé à mettre en œuvre nos solutions alimentées par le réseau, comme l'utilisation de l Identity Insights API comme démo, mais j'ai également hâte de consulter le marché des plugins NativePHP pour voir quelles capacités les développeurs mobiles peuvent utiliser. Et oui, j'utilise l'expression "développeurs mobiles" et non "développeurs PHP". Parce que cela change la donne.
Vous avez une question ou souhaitez partager ce que vous construisez ?
Rejoignez la conversation sur le Communauté Vonage Slack
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
Partager:
Acteur de formation avec une thèse sur la comédie, je suis venu au développement PHP par le biais de la scène des rencontres. Vous pouvez me trouver en train de parler et d'écrire sur la technologie, ou de jouer/acheter des disques bizarres de ma collection de vinyles.
