本文整理汇总了PHP中Google\Protobuf\DescriptorProto::getNestedType方法的典型用法代码示例。如果您正苦于以下问题:PHP DescriptorProto::getNestedType方法的具体用法?PHP DescriptorProto::getNestedType怎么用?PHP DescriptorProto::getNestedType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Google\Protobuf\DescriptorProto
的用法示例。
在下文中一共展示了DescriptorProto::getNestedType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setupFullNameForMessage
protected function setupFullNameForMessage(DescriptorProto $message, $package_name = "")
{
$new_package_name = $package_name . "." . $message->getName();
foreach ($message->getEnumType() as $enum) {
$this->setupFullNameForEnum($enum, $new_package_name);
}
foreach ($message->getNestedType() as $m) {
$this->setupFullNameForMessage($m, $new_package_name);
}
$message->full_name = $package_name . "." . $message->getName();
$message->package_name = $package_name;
MessagePool::register($message->full_name, $message);
if (MyHelper::IsPackageNameOverriden($this->file)) {
foreach ($message->getField() as $field) {
/** @var $field FieldDescriptorProto */
if ($field->getType() == \ProtocolBuffers::TYPE_MESSAGE || $field->getType() == \ProtocolBuffers::TYPE_ENUM) {
$name = $field->getTypeName();
$package = $this->file->getPackage();
if ($package) {
$name = str_replace($package, MyHelper::getPackageName($this->file), $name);
} else {
$name = MyHelper::getPackageName($this->file) . $name;
}
$name = preg_replace("/^\\.+/", ".", $name);
$field->setTypeName($name);
}
}
}
}
示例2: generate
public function generate(Printer $printer)
{
foreach ($this->descriptor->getEnumType() as $enum) {
$generator = new EnumGenerator($this->context, $enum, $this->file_list);
if ($this->descriptor->file()->getOptions()->GetExtension("php")->getMultipleFiles()) {
$child_name = $generator->fileName();
$this->file_list[] = $child_name;
$child_printer = new Printer($this->context->open($child_name), "`");
$generator->generate($child_printer);
}
}
foreach ($this->descriptor->getNestedType() as $message) {
$generator = new MessageGenerator($this->context, $message, $this->file_list);
if ($this->descriptor->file()->getOptions()->GetExtension("php")->getMultipleFiles()) {
$child_name = $generator->fileName();
$this->file_list[] = $child_name;
$child_printer = new Printer($this->context->open($child_name), "`");
$generator->generate($child_printer);
}
}
if ($this->descriptor->file()->getOptions()->getExtension("php")->getMultipleFiles()) {
$printer->put("<?php\n");
}
$this->printUseNameSpaceIfNeeded($printer);
$printer->put("/**\n" . " * Generated by the protocol buffer compiler. DO NOT EDIT!\n" . " * source: `filename`\n" . " *\n", "filename", $this->descriptor->file()->getName());
if ($dict = SourceInfoDictionary::get($this->descriptor->file()->getName(), $this->descriptor->getName(), "message")) {
/* @var $dict \google\protobuf\SourceCodeInfo\Location */
if ($dict->getLeadingComments()) {
$lines = preg_split("/\r?\n/", trim($dict->getLeadingComments()));
foreach ($lines as $line) {
if ($line[0] == " ") {
$line = substr($line, 1);
}
$printer->put(" * `comment`\n", "comment", $line);
}
$printer->put(" *\n");
}
}
$this->printMagicMethod($printer);
$printer->put(" */\n");
$printer->put("class `name` extends `base`\n{\n", "name", Helper::getClassName($this->descriptor, false), "base", Helper::getBaseClassName($this->descriptor));
$printer->indent();
$this->printTraitsInsertionPoint($printer);
$this->printProperties($printer);
$printer->put("// @@protoc_insertion_point(class_scope:`name`)\n\n", "name", $this->descriptor->full_name);
$this->printGetDescriptor($printer);
$printer->outdent();
$printer->put("}\n");
if ($this->enclose_namespace_) {
$printer->outdent();
$printer->put("}\n\n");
}
$this->printExtensions();
PragmaticInserter::execute($this->descriptor, $this->context);
}
示例3: collectMessage
private function collectMessage($package, DescriptorProto $message, $path)
{
$messagePackage = $package . "." . $message->getName();
$className = $this->convertPackageToNamespace($messagePackage);
$this->messages[$className] = $message;
$this->setPath($className, $path);
foreach ((array) $message->getNestedType() as $i => $nestedMessage) {
$this->collectMessage($messagePackage, $nestedMessage, array_merge($path, array(DescriptorProtoMeta::NESTED_TYPE_PROTOBUF_FIELD, $i)));
}
foreach ((array) $message->getEnumType() as $i => $nestedEnum) {
$this->collectEnum($messagePackage, $nestedEnum, array_merge($path, array(DescriptorProtoMeta::ENUM_TYPE_PROTOBUF_FIELD, $i)));
}
}
示例4: compileMessage
protected function compileMessage(proto\DescriptorProto $msg, $ns)
{
$s = array();
$s[] = "namespace " . $this->normalizeNS($ns) . " {";
$s[] = "";
$s[] = " // @@protoc_insertion_point(scope_namespace)";
$s[] = " // @@protoc_insertion_point(namespace_{$ns})";
$s[] = "";
$cmt = $this->compiler->getComment($ns . '.' . $msg->getName(), ' * ');
if ($cmt) {
$s[] = " /**";
$s[] = $cmt;
$s[] = " */";
}
// Compute a new namespace with the message name as suffix
$ns .= '.' . $msg->getName();
$s[] = ' class ' . $msg->getName() . ' extends \\DrSlump\\Protobuf\\Message {';
$s[] = '';
foreach ($msg->getField() as $field) {
$s[] = $this->generatePublicField($field, $ns, " ");
}
$s[] = '';
$s[] = ' /** @var \\Closure[] */';
$s[] = ' protected static $__extensions = array();';
$s[] = '';
$s[] = ' public static function descriptor()';
$s[] = ' {';
$s[] = ' $descriptor = new \\DrSlump\\Protobuf\\Descriptor(__CLASS__, \'' . $ns . '\');';
$s[] = '';
foreach ($msg->getField() as $field) {
$s[] = $this->compileField($field, $ns, " ");
$s[] = ' $descriptor->addField($f);';
$s[] = '';
}
$s[] = ' foreach (self::$__extensions as $cb) {';
$s[] = ' $descriptor->addField($cb(), true);';
$s[] = ' }';
$s[] = '';
$s[] = ' // @@protoc_insertion_point(scope_descriptor)';
$s[] = ' // @@protoc_insertion_point(descriptor_' . $ns . ')';
$s[] = '';
$s[] = ' return $descriptor;';
$s[] = ' }';
$s[] = '';
//$s[]= " protected static \$__exts = array(";
//foreach ($msg->getExtensionRange() as $range):
//$s[]= ' array(' . $range->getStart() . ', ' . ($range->getEnd()-1) . '),';
//endforeach;
//$s[]= " );";
//$s[]= "";
foreach ($msg->getField() as $field) {
$s[] = $this->generateAccessors($field, $ns, " ");
}
$s[] = "";
$s[] = " // @@protoc_insertion_point(scope_class)";
$s[] = ' // @@protoc_insertion_point(class_' . $ns . ')';
$s[] = " }";
$s[] = "}";
$s[] = "";
// Generate Enums
if ($msg->hasEnumType()) {
foreach ($msg->getEnumType() as $enum) {
$src = $this->compileEnum($enum, $ns);
$this->addComponent($ns, $enum->getName(), $src);
}
}
// Generate nested messages
if ($msg->hasNestedType()) {
foreach ($msg->getNestedType() as $msg) {
$src = $this->compileMessage($msg, $ns);
$this->addComponent($ns, $msg->getName(), $src);
}
}
// Collect extensions
if ($msg->hasExtension()) {
foreach ($msg->getExtensionList() as $field) {
$this->extensions[$field->getExtendee()][] = array($ns, $field);
}
}
return implode(PHP_EOL, $s) . PHP_EOL;
}