Options pour PHP CLI sur Windows

Je travaille avec la CLI PHP sur Windows en ce moment pour écrire quelques petites applications de ligne de commande de bureau.

Je voulais savoir si et comment il serait possible de:

  • Effacer l’écran (cls serait la commande normale mais exec () ne fonctionnerait pas avec elle)
  • Changer la couleur, changer la couleur des parties de la sortie (vu cela dans les programmes avant)
  • Augmentez la ligne de commande horizontalement – les choses deviennent rapidement illisibles

L’un des éléments ci-dessus est-il possible dans un script PHP?

Sous Windows, à l’invite standard de la CLI, vous ne pouvez pas imprimer en couleur (comme dans la réponse de Spudley).

Vous pouvez modifier la taille de la fenêtre en tant qu’utilisateur en cliquant avec le bouton droit de la souris sur la barre de titre de la fenêtre de commande et en sélectionnant Propriétés, puis en modifiant les valeurs dans l’onglet Mise en page. Je ne pense pas qu’il soit possible de modifier la largeur de la CLI dans PHP.

Vous pouvez vérifier la largeur de la fenêtre CLI sous Windows en utilisant la fonction que j’ai écrite ici

Voir la page de manuel de PHP pour travailler avec la ligne de commande

Pour répondre directement à chacun de vos points:

Il y a un commentaire sur cette page qui donne une fonction qui peut effacer l’écran. Je vais le citer ici pour vous:

 

Il y a aussi un autre commentaire qui explique comment changer les couleurs. Encore une fois, je le citerai:

  

et pour réinitialiser:

  

Vous devriez lire le rest de cette page pour plus d’informations sur la manipulation de la CLI.

La seule partie de votre question qui rest sans réponse est le troisième point. Malheureusement, je ne pense pas que vous serez en mesure de le faire, et je ne pense pas qu’il soit possible de redimensionner horizontalement la fenêtre de ligne de commande Windows.

J’espère que cela pourra aider.

J’ai créé un petit script de sauvegarde avec PHP et, d’après mes souvenirs, vous pouvez imprimer des caractères de retour arrière pour supprimer du contenu. Pas vraiment idéal si.

Il suffit de le google: http://www.php.net/manual/en/features.commandline.php#77142

En ce qui concerne la troisième question, je vous suggère d’utiliser la ligne de commande par défaut pour la console 2 . C’est un excellent remplacement qui vous permet non seulement d’utiliser la largeur de votre choix (à condition que cela corresponde à votre écran), mais aussi de prendre en charge l’historique des commandes, les tabs et certains parameters de l’interface utilisateur.

Le code fourni ne fonctionnera pas sous Windows car PHP sous Windows fait quelque chose dans la fenêtre de commande. Je ne suis pas sûr de ce que fait PHP, mais j’ai écrit un simple programme Freebasic avec seulement deux lignes:

  cls end 

Je l’ai ensuite compilé et l’ai exécuté sous une fenêtre de ligne de commande normale. Il a nettoyé l’écran sans aucun problème. J’ai ensuite fait ce qui suit en PHP:

  

Lorsque j’ai exécuté le programme, il n’a fait que la ligne “Ceci est un test”. Ainsi, il y a une sorte de suppression de PHP qui recherche et arrête tout type de séquence d’échappement. Tant que cela n’est pas corrigé dans PHP, vous ne pourrez jamais faire de cls, ni utiliser de curses, de ncurses ou toute autre bibliothèque. Ce qu’il faut faire est d’intégrer quelque chose comme les méthodes de fenêtrage de FreeBasic comme une sorte de classe (ou peut-être juste un ensemble de routines C) qui ouvrira une nouvelle fenêtre via les méthodologies de ce langage et les utilisera pour faire la fenêtre de texte. Ensuite, toutes les séquences d’échappement fonctionneront. Jusque là – ils ne le feront pas.

Ce que je trouve bizarre, c’est que PHP a été écrit à l’origine en Perl et que Perl fera ncurses sur Windows sans aucun problème. Perl permettra également à toutes les séquences d’échappement de fonctionner. Donc, il y a juste quelque chose à faire sur la compilation Windows qui est à l’origine de ce problème.