On Fri, May 1, 2026, at 4:37 AM, Nicolas Grekas wrote:
> Dear internals,
>
> It's my pleasure to submit this new RFC to yours.
> Please have a look and let me know:
> https://wiki.php.net/rfc/exists-magic-method
>
> TL;DR: I'm proposing a new opt-in magic method:
>
>     public function __exists(string $name): bool;
>
> It'd let userland tell "set to null" apart from "missing" on objects, 
> it'd restore
> isset() <=> ?? equivalence on magic properties, and it'd fixe GH-12695 
> as a
> corollary. It's forward-compatible as a regular method on PHP <= 8.5 
> (probeable
> via method_exists()), and would be magic on 8.6+.
>
> Cheers,
> Nicolas

Thanks for the very detailed RFC!

> If it returns false, the fetch produces “uninitialized” (treated as null by 
> ??, so y is evaluated). __get() is not called.

What is y?  Looks like a reference to a previous iteration of the text.

The Sequencing section also doesn't describe the behavior when __exists() isn't 
defined.  Does it just skip to step 4?  (Please specify in the text.)

Is the intent to eventually deprecate __isset()?  The RFC it doesn't now, but 
do you feel that is the eventual end-game, in PHP 10 or whatever?

The big one: Should any parallel changes or additions be made to property 
hooks?  An exists() operation in addition to get/set, for instance?  (I'm not 
sure at the moment, but it should be thought through and discussed, and if not, 
documented in the RFC.)

--Larry Garfield

Reply via email to