PHP hors navigateur : Créer des applications CLI multiplateformes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

PHP, ce n'est pas que pour le web

\n\n

Quand on dit « PHP », la plupart des gens imaginent immédiatement le fil d'actualités de Facebook, le panier d'une boutique en ligne ou le backend de WordPress. C'est logique : le langage est né comme un outil pour le web. Mais que diriez-vous si je vous disais que PHP excelle aussi dans des tâches généralement confiées à Python, Bash ou Go ? Je parle du développement multiplateforme en PHP — la création d'utilitaires qui fonctionnent aussi bien sur Windows, Linux que macOS, sans avoir à réécrire le code.

\n\n

Dans cet article, nous n'allons pas vous apprendre à créer des formulaires. Nous allons vous montrer comment écrire un gestionnaire de fichiers en console, un analyseur de logs et un système de surveillance de dossiers — le tout en PHP pur, sans aucun serveur web. Vous apprendrez à contourner les pièges des différents systèmes d'exploitation et à écrire un code qui s'exécute partout de la même manière.

\n\n

Prêts ? Ouvrez votre terminal et préparez-vous à être surpris par les possibilités du bon vieux PHP.

\n\n

Pourquoi PHP pour des tâches multiplateformes ? Trois arguments solides

\n\n

Avant de plonger dans le code, voyons pourquoi utiliser PHP pour des utilitaires desktop et serveur. Python a Django et Flask, Node.js a Express. Pourquoi PHP ?

\n\n
    \n
  • Disponibilité omniprésente. PHP est installé sur presque tous les hébergements mutualisés et sur 80% des serveurs dans le monde. Si vous écrivez un outil d'administration, il y a de fortes chances que PHP soit déjà présent sur la machine cible. Pas besoin d'installer un runtime supplémentaire.
  • \n
  • Faible barrière à l'entrée pour les développeurs web. Vous connaissez déjà la syntaxe, les fonctions de manipulation de chaînes et de tableaux. Vous n'avez pas besoin d'apprendre un nouveau langage pour automatiser les tâches courantes sur le serveur.
  • \n
  • Bibliothèque standard riche. PHP dispose de tout le nécessaire pour travailler avec les fichiers, les processus, les sockets réseau et les archives zip. Et les extensions PECL comme parallel ou pthreads ajoutent le multithreading.
  • \n
\n\n

Bien sûr, PHP n'est pas idéal pour les applications GUI (bien qu'il existe PHP-GTK). Mais pour les utilitaires console et les démons, c'est un outil mature et stable. Voyons comment écrire ce type de code correctement.

\n\n

Les bases du code PHP multiplateforme

\n\n

La première chose à retenir : les séparateurs de chemins. Sous Linux, c'est /, sous Windows, c'est \\. PHP fournit la constante DIRECTORY_SEPARATOR, mais il est encore plus pratique d'utiliser la fonction DIRECTORY_SEPARATOR ou la barre oblique universelle / — Windows la comprend parfaitement depuis PHP 7+.

\n\n

Gestion correcte des chemins

\n\n
<?php\n// Mauvais — barre oblique codée en dur\n$path = '/var/log/errors.log'; // Plantera sur Windows\n\n// Bien — utilisation de DIRECTORY_SEPARATOR\n$path = 'var' . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR . 'errors.log';\n\n// Excellent — utilisation de / et de realpath()\n$path = __DIR__ . '/logs/errors.log';\necho $path; // Fonctionne sur les deux OS\n?>\n
\n\n

Deuxième point important : l'encodage. Sous Windows, la console utilise souvent CP866 par défaut, tandis que les scripts PHP sont en UTF-8. Pour afficher des caractères accentués sous Windows, utilisez la fonction mb_convert_encoding() ou définissez l'encodage via chcp 65001 au début du script.

\n\n

Exemple : lecture multiplateforme d'un fichier

\n\n
<?php\nfunction lireFichierLog(string $nomFichier): string {\n    // Vérifier l'existence du fichier\n    if (!file_exists($nomFichier)) {\n        throw new RuntimeException("Le fichier $nomFichier est introuvable");\n    }\n    \n    // Lire le contenu\n    $contenu = file_get_contents($nomFichier);\n    \n    // Déterminer l'OS et convertir l'encodage pour l'affichage\n    if (PHP_OS_FAMILY === 'Windows') {\n        $contenu = mb_convert_encoding($contenu, 'CP866', 'UTF-8');\n    }\n    \n    return $contenu;\n}\n\necho lireFichierLog('logs/app.log');\n?>\n
\n\n

Création d'un utilitaire concret : surveillance des modifications dans un dossier

\n\n

Écrivons quelque chose d'utile — un script qui surveille un dossier et af

Blogs

Book Recommendations