addListener(Shell::EVT_BAD_COMMAND, function ($e) { echo "EVT_BAD_COMMAND:\n"; printf("| command: %s\n", $e->command); printf("|_args: %s\n", join(" ",$e->args)); }); $myShell->addListener(Shell::EVT_BEFORE_COMMAND, function ($e) { echo "EVT_BEFORE_COMMAND:\n"; printf("| command: %s\n", $e->command); printf("|_args: %s\n", join(" ",$e->args)); }); $myShell->addListener(Shell::EVT_AFTER_COMMAND, function ($e) { echo "EVT_AFTER_COMMAND:\n"; printf("| command: %s\n", $e->command); printf("| args: %s\n", join(" ",$e->args)); printf("|_type: %s\n", $e->type); }); // Set the initial prompt, not really needed. $myShell->setPrompt("test>"); // Create an anonymous context and add a command $ctx = $myShell->createContext("root"); $ctx->addCommand("hello", function () { echo "Hello World!\n"; }); // Run the shell $myShell->run();