Ce face stream_isatty
Un script CLI afișează uneori într-un terminal, alteori într-un fișier sau în alt program (php script.php > rezultat.txt). stream_isatty(STDOUT) îți spune care este cazul.
Se folosește ca să pui culori sau bare de progres doar când cineva se uită la terminal. Când ieșirea merge într-un fișier, codurile de culoare ar strica textul.
Parametri
| Parametru | Descriere |
|---|---|
$stream |
Stream-ul verificat, de obicei STDOUT sau STDERR. |
Ce returnează
true dacă stream-ul este un terminal, altfel false.
Exemple
Exemplul 1: Ieșirea acestui exemplu
Exemplele de pe această pagină sunt rulate de un program care adună rezultatul, nu într-un terminal. De aceea primul rezultat este false. Rulat din terminal, ar fi true.
<?php
var_dump(stream_isatty(STDOUT));
var_dump(stream_isatty(fopen("php://memory", "r")));
Rezultat
bool(false)
bool(false)
Exemplul 2: Culoare doar în terminal
<?php
function succes(string $mesaj): string
{
return stream_isatty(STDOUT) ? "\033[32m$mesaj\033[0m" : $mesaj;
}
echo succes("Backup terminat: 42 de fișiere") . "\n";
Rezultat
Backup terminat: 42 de fișiere
Greșeli frecvente
- Folosești constanta
STDOUTîntr-o pagină web. Ea există doar în PHP CLI. Pe server web, deschidephp://stdoutsau nu folosi deloc verificarea.
Comenzi înrudite
php_uname: Returnează informații despre sistemul de operare pe care rulează PHP.fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.