Hi
On 2026-09-27 19:19, Pratik Bhujel wrote:
I would like to formally propose the Io\Terminal API for PHP 8.7:
https://wiki.php.net/rfc/io_terminal
Thank you for the RFC. Some questions to start of the discussion:
1. Should TerminalSize have a regular constructor? It seems to be safe
to allow constructing it from userland, e.g. for testing purposes.
2. It would help readability if the stub would indicate the
non-serializability (and strict properties) instead of mentioning it in
the prose. Basically you can just take the stub file from your PR and
include it in the RFC.
3. Terminal::create() should probably be ::fromStdio() or similar.
4. I'm not sure about false vs Exception for the various methods.
`enableRawMode()` should probably be Exception, for `readKey()` the
`false` return is not explained. Also the behavior of what happens when
a timeout strikes is not explained.
5. Should ModeToken have a property that points back to the
corresponding Terminal? Overall the interaction between the destructors
and ModeToken and restoreMode should be explained more. As an example,
what happens if the Terminal object dies before the ModeToken object?
What if I create two Terminal objects for the same terminal?
Best regards
Tim Düsterhus