writeln("Executing command"); } } class MyShell extends Shell { protected $seq = 0; protected function configure(array $config) { $this->addCommand("hello", function () { echo "world\n\rthis\n\ris\n\ra\ntest\n\r"; }); $this->addCommand(new MyCommand()); } protected function getPrompt() { return "test[{$this->seq}]: "; } protected function onUpdate() { static $lt; $t = floor(microtime(true)); if ($t > $lt) { $lt = $t + 5; echo date("Y-m-d h:i:s")."\n"; } } protected function onCommand($buffer) { $this->seq++; parent::onCommand($buffer); } } $myShell = new MyShell(); $myShell->run(); echo "Exiting\n";