pushContext($context); $context->addCommand("hello", function () { echo "world\nthis\nis\na\ntest\n"; }); $context->addCommand("mycommand", new MyCommand()); $this->updatePrompt(); $this->addListener("update", function() { static $lt; $t = floor(microtime(true)); if ($t > $lt) { $lt = $t + 5; echo date("Y-m-d h:i:s")."\n"; } }); } protected function updatePrompt() { $this->setPrompt("test[{$this->seq}]: "); } protected function onCommand($buffer) { $this->seq++; $this->updatePrompt(); parent::onCommand($buffer); } } $myShell = new MyShell(); $myShell->run(); echo "Exiting\n";