aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/src/Google/Protobuf/descriptor.php
diff options
context:
space:
mode:
Diffstat (limited to 'php/src/Google/Protobuf/descriptor.php')
-rw-r--r--php/src/Google/Protobuf/descriptor.php36
1 files changed, 26 insertions, 10 deletions
diff --git a/php/src/Google/Protobuf/descriptor.php b/php/src/Google/Protobuf/descriptor.php
index 2263af6e..9c744a8a 100644
--- a/php/src/Google/Protobuf/descriptor.php
+++ b/php/src/Google/Protobuf/descriptor.php
@@ -220,20 +220,36 @@ class Descriptor
}
}
+function getClassNamePrefix(
+ $classname,
+ $file_proto)
+{
+ $option = $file_proto->getOptions();
+ $prefix = is_null($option) ? "" : $option->getPhpClassPrefix();
+ if ($prefix !== "") {
+ return $prefix;
+ }
+
+ $reserved_words = array("Empty");
+ foreach ($reserved_words as $reserved_word) {
+ if ($classname === $reserved_word) {
+ if ($file_proto->getPackage() === "google.protobuf") {
+ return "GPB";
+ } else {
+ return "PB";
+ }
+ }
+ }
+
+ return "";
+}
+
function getClassNameWithoutPackage(
$name,
$file_proto)
{
- if ($name === "Empty" && $file_proto->getPackage() === "google.protobuf") {
- return "GPBEmpty";
- } else {
- $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)));
- }
+ $classname = implode('_', array_map('ucwords', explode('.', $name)));
+ return getClassNamePrefix($classname, $file_proto) . $classname;
}
function getFullClassName(