aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/plugin-stub-generator/src/SourceFile.php
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-07 20:51:59 +0900
committernsfisis <nsfisis@gmail.com>2026-08-07 20:51:59 +0900
commit18a37a098157a98edbc8473e9c0d8dff3e8a88fa (patch)
tree471682a4493fc8ddc1577a6f1e3c3d9c203ebf2c /scripts/plugin-stub-generator/src/SourceFile.php
parentcd9e4a2b67cdea258e1daa2d9d830b7643bc19bb (diff)
downloadphp-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 'scripts/plugin-stub-generator/src/SourceFile.php')
0 files changed, 0 insertions, 0 deletions