diff options
author | Paul Yang <TeBoring@users.noreply.github.com> | 2017-03-17 11:08:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-17 11:08:06 -0700 |
commit | 6b27c1f981a9a93918e4039f236ead27165a8e91 (patch) | |
tree | 980c622c849bc84be49b70996ce4e19979ba9122 /php/src/Google/Protobuf/descriptor.php | |
parent | c0871aa49c685e3aca19244c67d54ff321a62865 (diff) | |
download | protobuf-6b27c1f981a9a93918e4039f236ead27165a8e91.tar.gz protobuf-6b27c1f981a9a93918e4039f236ead27165a8e91.tar.bz2 protobuf-6b27c1f981a9a93918e4039f236ead27165a8e91.zip |
Add file option php_class_prefix (#2849)
This option will be prepended to generated classes of all messages in
the containing file.
Diffstat (limited to 'php/src/Google/Protobuf/descriptor.php')
-rw-r--r-- | php/src/Google/Protobuf/descriptor.php | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/php/src/Google/Protobuf/descriptor.php b/php/src/Google/Protobuf/descriptor.php index 9e56ef27..2263af6e 100644 --- a/php/src/Google/Protobuf/descriptor.php +++ b/php/src/Google/Protobuf/descriptor.php @@ -78,14 +78,14 @@ class FileDescriptor $file->setPackage($proto->getPackage()); foreach ($proto->getMessageType() as $message_proto) { $file->addMessageType(Descriptor::buildFromProto( - $message_proto, $file->getPackage(), "")); + $message_proto, $proto, "")); } foreach ($proto->getEnumType() as $enum_proto) { $file->getEnumType()[] = $file->addEnumType( EnumDescriptor::buildFromProto( $enum_proto, - $file->getPackage(), + $proto, "")); } return $file; @@ -182,7 +182,7 @@ class Descriptor return $this->options; } - public static function buildFromProto($proto, $package, $containing) + public static function buildFromProto($proto, $file_proto, $containing) { $desc = new Descriptor(); @@ -192,7 +192,7 @@ class Descriptor getFullClassName( $proto, $containing, - $package, + $file_proto, $message_name_without_package, $classname, $fullname); @@ -207,7 +207,7 @@ class Descriptor // Handle nested types. foreach ($proto->getNestedType() as $nested_proto) { $desc->addNestedType(Descriptor::buildFromProto( - $nested_proto, $package, $message_name_without_package)); + $nested_proto, $file_proto, $message_name_without_package)); } // Handle oneof fields. @@ -220,43 +220,46 @@ class Descriptor } } -function addPrefixIfSpecial( +function getClassNameWithoutPackage( $name, - $package) + $file_proto) { - if ($name === "Empty" && $package === "google.protobuf") { + if ($name === "Empty" && $file_proto->getPackage() === "google.protobuf") { return "GPBEmpty"; } else { - return $name; + $option = $file_proto->getOptions(); + $prefix = is_null($option) ? "" : $option->getPhpClassPrefix(); + // Nested message class names are seperated by '_', and package names + // are seperated by '\'. + return $prefix . implode('_', array_map('ucwords', + explode('.', $name))); } } function getFullClassName( $proto, $containing, - $package, + $file_proto, &$message_name_without_package, &$classname, &$fullname) { // Full name needs to start with '.'. - $message_name_without_package = - addPrefixIfSpecial($proto->getName(), $package); + $message_name_without_package = $proto->getName(); if ($containing !== "") { $message_name_without_package = $containing . "." . $message_name_without_package; } + + $package = $file_proto->getPackage(); if ($package === "") { $fullname = "." . $message_name_without_package; } else { $fullname = "." . $package . "." . $message_name_without_package; } - // Nested message class names are seperated by '_', and package names are - // seperated by '\'. $class_name_without_package = - implode('_', array_map('ucwords', - explode('.', $message_name_without_package))); + getClassNameWithoutPackage($message_name_without_package, $file_proto); if ($package === "") { $classname = $class_name_without_package; } else { @@ -333,7 +336,7 @@ class EnumDescriptor return $this->klass; } - public static function buildFromProto($proto, $package, $containing) + public static function buildFromProto($proto, $file_proto, $containing) { $desc = new EnumDescriptor(); @@ -343,7 +346,7 @@ class EnumDescriptor getFullClassName( $proto, $containing, - $package, + $file_proto, $enum_name_without_package, $classname, $fullname); |