From 0306246f0c9ac3c076f559e358ae3a9cd3b1d3e6 Mon Sep 17 00:00:00 2001 From: Tom Arbesser-Rastburg Date: Tue, 21 Oct 2025 18:37:43 +1100 Subject: [PATCH] Improve exception message in get_field() for unknown properties --- php/ext/google/protobuf/message.c | 3 ++- php/tests/GeneratedClassTest.php | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c index bc43d34431b2a..0e1560d687b3d 100644 --- a/php/ext/google/protobuf/message.c +++ b/php/ext/google/protobuf/message.c @@ -94,7 +94,8 @@ static const upb_FieldDef* get_field(Message* msg, zend_string* member) { m, ZSTR_VAL(member), ZSTR_LEN(member)); if (!f) { - zend_throw_exception_ex(NULL, 0, "No such property %s.", + zend_throw_exception_ex(NULL, 0, "No such property %s on %s.", + ZSTR_VAL(member), ZSTR_VAL(msg->desc->class_entry->name)); } diff --git a/php/tests/GeneratedClassTest.php b/php/tests/GeneratedClassTest.php index 787f76f4bb1ab..270ec109df639 100644 --- a/php/tests/GeneratedClassTest.php +++ b/php/tests/GeneratedClassTest.php @@ -41,6 +41,14 @@ public function testSetterGetter() $this->assertSame(1, $m->getOptionalInt32()); } + public function testUnknownPropertyErrorIncludesPropertyAndClass() + { + $m = new TestMessage(); + $this->expectException(Exception::class); + $this->expectExceptionMessage('No such property does_not_exist on Foo\\TestMessage'); + $m->does_not_exist; + } + ######################################################### # Test int32 field. #########################################################