Re: [RFC] Polling API

From: Date: Tue, 31 Mar 2026 09:23:50 +0000
Subject: Re: [RFC] Polling API
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-130508@lists.php.net to get a copy of this message
Hi Sorry for the late feedback, it's hard juggling all the different RFCs that are in progress to provide meaningful feedback. Am 2026-03-11 22:07, schrieb Jakub Zelenka:
I also think that there is not really much use case for user space to implement their own handles so such interface would be used only internally anyway.
This applies equally to interfaces and abstract methods. The abstract base class however will make it much weirder when a specific (future) handle might need to implement additional interfaces or abstract classes.
In addition interface would effectively expose the internal stream fd which is currently hidden and makes harder messing up with stream fd which might cause various issues.
I don't understand that point. For both an interface and an abstract method, the method would exist on the child class and thus can be called by a developer.
Well if it is abstract, then the method can be protected and because the classes are final, user spaces cannot call it. But for interface I would
Protected methods of internal classes should still be accessible to Reflection.
need to make it public which means that StreamHandle would need to expose callabable (public) method. I know that I could just return 0 and use different handling internally but I think this would be surprising and created obvious inconsistency. I mean it's fine if the calls happen internally but if the exposed methods are just dummy and return nonsense for user space, then I don't think it would be a good design.
It's equally weird that there is a protected method that is effectively internally called by an unrelated class (Context) that is not supposed to know about it. Perhaps the correct solution would then be removing the getFileDescriptor() method from the public API entirely and change Handle to be an empty “marker interface” that cannot be implemented in userland (similarly to Throwable) to leave all options open for the future? Best regards Tim Düsterhus

« previous php.internals (#130508) next »