diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-07 20:51:59 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-07 20:51:59 +0900 |
| commit | 18a37a098157a98edbc8473e9c0d8dff3e8a88fa (patch) | |
| tree | 471682a4493fc8ddc1577a6f1e3c3d9c203ebf2c /crates/shirabe-external-packages/src/composer/xdebug_handler | |
| parent | cd9e4a2b67cdea258e1daa2d9d830b7643bc19bb (diff) | |
| download | php-shirabe-18a37a098157a98edbc8473e9c0d8dff3e8a88fa.tar.gz php-shirabe-18a37a098157a98edbc8473e9c0d8dff3e8a88fa.tar.zst php-shirabe-18a37a098157a98edbc8473e9c0d8dff3e8a88fa.zip | |
fix(plugin): make proxy stub property access an explicit error
A proxy stub declares none of the real class's instance properties, and the
`__get`/`__set` forwarders were emitted only for classes that declare a public
one. Every other property access therefore got PHP's own answer for an
undeclared property — null on a read, a dynamic property on a write — so plugin
code reading state the entity holds ran on with null and failed somewhere else
entirely, or not at all.
Emit the forwarders on every root stub, add `__isset`/`__unset` alongside them
so `isset()` cannot answer false silently either, and serve all four from one
dispatcher that answers the state the Rust-side entity exposes and rejects every
other name.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/composer/xdebug_handler')
0 files changed, 0 insertions, 0 deletions
