public static function getFullQualifiedTypeName(FieldDescriptorProto $field, DescriptorProto $descriptor, FileDescriptorProto $file) { if (FieldDescriptorProto\Type::isMessage($field) || FieldDescriptorProto\Type::isEnum($field)) { $name = $field->getTypeName(); if (strlen($name) < 1) { return null; } if ($name[0] == ".") { $name = Helper::getPackageName($file) . $name; } else { $name = $descriptor->package_name . $name; } } else { $name = $field->getTypeName(); } return $name; }
public function printProperties(Printer $printer) { if ($this->descriptor->getOptions()->getExtension("php_option")->getUseSingleProperty()) { $printer->put("/** @var array \$`var` */\n", "var", $this->descriptor->getOptions()->getExtension("php_option")->getSinglePropertyName()); $printer->put("protected \$`var` = array();\n", "var", $this->descriptor->getOptions()->getExtension("php_option")->getSinglePropertyName()); } else { foreach ($this->descriptor->getField() as $field) { /* @var $field \google\protobuf\FieldDescriptorProto */ $printer->put("/**\n"); if ($dict = SourceInfoDictionary::get($this->descriptor->file()->getName(), $this->descriptor->getName(), $field->getName())) { /* @var $dict \google\protobuf\SourceCodeInfo\Location */ if ($dict->getLeadingComments()) { $lines = preg_split("/\r?\n/", trim($dict->getLeadingComments())); foreach ($lines as $line) { $line = Helper::cleanupComment($line); $printer->put(" * `comment`\n", "comment", $line); } $printer->put(" *\n"); } } $printer->put(" * @var `type` \$`var`\n", "type", $this->getTypeName($field), "var", $field->getName()); $printer->put(" * @tag `tag`\n", "tag", $field->getNumber()); $printer->put(" * @label `required`\n", "required", FieldDescriptorProto\Label::isRequired($field) ? "required" : "optional"); $printer->put(" * @type `type`\n", "type", Helper::getFieldTypeName($field)); if (FieldDescriptorProto\Label::isRepeated($field) && FieldDescriptorProto\Type::isMessage($field) || FieldDescriptorProto\Type::isEnum($field)) { $printer->put(" * @see `see`\n", "see", Helper::getClassName($field, true)); } if ($dict = SourceInfoDictionary::get($this->descriptor->file()->getName(), $this->descriptor->getName(), $field->getName())) { /* @var $dict \google\protobuf\SourceCodeInfo\Location */ if ($dict->getTrailingComments()) { $printer->put(" *\n"); $lines = preg_split("/\r?\n/", trim($dict->getTrailingComments())); foreach ($lines as $line) { $printer->put(" * `comment`\n", "comment", Helper::cleanupComment($line)); } $printer->put(" *\n"); } } $printer->put(" **/\n"); $printer->put("protected \$`name`;\n", "name", $field->getName()); $printer->put("\n"); } } $printer->put("\n"); $printer->put("// @@protoc_insertion_point(properties_scope:`name`)\n\n", "name", $this->descriptor->full_name); }