Re: Improving the usability of PHP's interactive shell? (completions, displaying expression results, custom syntax)

From: Date: Sun, 09 Aug 2020 18:46:20 +0000
Subject: Re: Improving the usability of PHP's interactive shell? (completions, displaying expression results, custom syntax)
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-111400@lists.php.net to get a copy of this message
Hi internals, > - Add a hook to readline such as > readline_set_php_result_handler_callback(function(mixed $result, string > $snippet){...}) >   that can be used to create a user-defined function to print/process the result of > expressions. >  (Create a clone of zend_eval_stringl to support that) > (The result value would instead be freed after the callback was called) > >  Many other REPLs (Read-Eval-Print Loops) that I'm familiar with print a representation >of the result of expressions, but PHP doesn't. I've added this in https://github.com/php/php-src/pull/5962 . I plan to add a system ini setting that can be used to permanently disable this silently (enabled by default in all environments/example configs) This will be callable if readline is installed, whether or not the shell is interactive or the SAPI is CLI. - e.g. cli.allow_interactive_shell_result_function=1 would be the default. Other existing settings were https://www.php.net/manual/en/readline.configuration.php - A buggy handler closure might interfere with people trying to debug issues, which is why the ini setting is proposed. ``` readline_interactive_shell_result_function( function (string $code, $result) { // echo "Result of: " . trim($code) . "\n"; echo json_encode($result) . "\n"; // or var_dump(), etc. }); ``` 1. Are there objections to adding this in 8.1 (after adding the described ini setting)? 2. Thoughts on the name? readline_interactive_shell_result_handler_function probably makes more sense. https://www.php.net/manual/en/function.readline-completion-function.php does something similar. The unit tests give an example of how this could be used. https://github.com/php/php-src/pull/5962/files#diff-153ee3f384d333904c5000033bee9803 Thanks, - Tyson

« previous php.internals (#111400) next »