Una shell in PHP
PHP purtroppo non fornisce di default una shell per la prova dei comandi, come fanno ad esempio python e ruby (con irb).
Nella rete per fortuna si trovano delle buone alternative destinate a chi può interessare uno strumento simile.
Oggi ho trovato questa compatta soluzione in una riga (due, se si considera quella per indicare la posizione dell’interprete); ecco il codice:
#!/usr/bin/php
O in forma più leggibile
#!/usr/bin/php
while (1)
{
fputs ( STDOUT, "\n\-PHP$ ");
eval ( fgets ( STDIN ) );
}
?>
Questo piccolo script fa nell’ordine:
#!/usr/bin/php
Indica dove risiede l’interprete.
while (1)
Apre un loop while infinito, in quanto “1″ è una condizione sempre vera. Si poteva scrivere anche while (true).
fputs ( STDOUT, "\n\-PHP$ ");
Stampa un bel prompt per la nostra shell. STDOUT è la “destinazione” dove vengono inviati i dati con fputs.
eval ( fgets( STDIN ) );
fgets legge il codice da STDIN (il buffer di input predefinito, leggibile come un file), ed eval prende l’input, lo trasforma in codice e lo esegue. Semplice no?





Commenti
Questo articolo è stato segnalato su ZicZac.it….
…
Bella idea avere una console di test per PHP!
Ti ho preparato una versione per Windows, che va lanciata tramite php -f [nomefile] :
[?php
while (1) {
fputs ( STDOUT, "\n\-PHP$ ");
$line = fgets ( STDIN );
if (substr($line,0,5) != 'exit;') {
eval ($line);
} else {
exit;
}
}
?]
Rispetto alla tua versione, questa è “moddata”, perché per uscire basta scrivere “exit;”.
Già, sulla mia servono le parentesi..:)
[...] | phpblog posted under [...]