aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/compiler/php/php_generator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/google/protobuf/compiler/php/php_generator.cc')
-rw-r--r--src/google/protobuf/compiler/php/php_generator.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/google/protobuf/compiler/php/php_generator.cc b/src/google/protobuf/compiler/php/php_generator.cc
index cdb2f509..0bfe10c9 100644
--- a/src/google/protobuf/compiler/php/php_generator.cc
+++ b/src/google/protobuf/compiler/php/php_generator.cc
@@ -664,10 +664,18 @@ void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor,
// Generate setter.
GenerateFieldDocComment(printer, field, is_descriptor, kFieldSetter);
- printer->Print(
- "public function set^camel_name^($var)\n"
- "{\n",
- "camel_name", UnderscoresToCamelCase(field->name(), true));
+ if (field->type() == FieldDescriptor::TYPE_MESSAGE && !field->is_repeated()) {
+ printer->Print(
+ "public function set^camel_name^(^typehint^ $var = null)\n"
+ "{\n",
+ "camel_name", UnderscoresToCamelCase(field->name(), true),
+ "typehint", "\\" + FullClassName(field->message_type(), is_descriptor));
+ } else {
+ printer->Print(
+ "public function set^camel_name^($var)\n"
+ "{\n",
+ "camel_name", UnderscoresToCamelCase(field->name(), true));
+ }
Indent(printer);