> Le 13 janv. 2026 à 22:30, Larry Garfield <[email protected]> a écrit :
> 
> On Wed, Nov 5, 2025, at 5:24 PM, Larry Garfield wrote:
>> In other news, Ilija and I said a year ago that we'd take a swing at 
>> adding isReadable/isWriteable methods to ReflectionProperty.  Took a 
>> while, but here we are.  A strangely small RFC from us:
>> 
>> https://wiki.php.net/rfc/isreadable-iswriteable
> 
> Hi folks.
> 
> The holiday blackout period is over, and there's nothing else really to 
> discuss on this PR, so consider this an Intent to Vote notice for the 
> isReadable RFC.
> 
> I'll call the vote later this week, baring any new serious constructive 
> feedback.
> 
> --Larry Garfield

Hi,

The RFC says: 

> To use “my current scope,” the static::class construct is an easy way to 
> specify “whatever class this code is running in.”

The code is running in `self::class` or `__CLASS__`, not in `static::class`.

------

As noted in the RFC, `isReadable()` will give unavoidable false-positives 
(returning `true` although attempt to read the property will error). But there 
is also a false-negative:

```php
class C {

    function __construct(
        readonly private mixed $foo
    ) { }
    
    function __get($x) {
        if ($x === 'foo') {
            return $this->foo;
        }
        throw new Error('Undefined property '.$x);
    }

    function __isset($x) {
        if ($x === 'foo')
            return isset($this->foo); // not `true`, otherwise `isset(new 
C(null)->foo)` will return an incorrect result.
        }
        return false;
    }
}

$c = new C(null);

// will return false, although it is readable
var_dump(new ReflectionProperty($c, 'foo')->isReadable(null, $c));
```

One could skip the `__isset()` check in order to avoid the false-negative, at 
the cost of more false-positives. I don’t know what is best, because I tend to 
avoid `__get()` like the plague anyway.


—Claude

Reply via email to