/** * @param integer $number * @param string $name * @param integer $type * @param integer $label * @param string $typeName * @param array $values * * @return \google\protobuf\FieldDescriptorProto */ protected function createFieldDescriptorProto($number, $name, $type, $label, $typeName = null, array $values = []) { $field = new FieldDescriptorProto(); $options = isset($values['options']) ? $values['options'] : null; $field->setName($name); $field->setNumber($number); $field->setTypeName($typeName); $field->setType(FieldDescriptorProto\Type::valueOf($type)); $field->setLabel(FieldDescriptorProto\Label::valueOf($label)); if (isset($values['default'])) { $field->setDefaultValue($values['default']); } if ($options !== null) { $fieldOptions = new FieldOptions(); if (isset($options['packed'])) { $fieldOptions->setPacked($options['packed']); } $field->setOptions($fieldOptions); } return $field; }
protected function compileExtension(proto\FieldDescriptorProto $field, $ns, $indent) { $extendee = $this->normalizeNS($field->getExtendee()); $name = $this->normalizeNS($ns . '.' . $field->getName()); $field->setName($name); $s[] = "\\{$extendee}::extension(function(){"; $s[] = $this->compileField($field, $ns, $indent . ' '); $s[] = ' // @@protoc_insertion_point(scope_extension)'; $s[] = ' // @@protoc_insertion_point(extension_' . $ns . ':' . $field->getName() . ')'; $s[] = ' return $f;'; $s[] = "});"; return $indent . implode(PHP_EOL . $indent, $s); }
public function compileExtension(proto\FieldDescriptorProto $field, $ns, $indent) { $extendee = $this->normalizeReference($field->getExtendee()); $name = $field->getName(); if ($ns) { $name = $ns . '.' . $name; } $field->setName($name); $s[] = "ProtoJson.extend({$extendee}, {"; $s[] = " {$field->number}: " . $this->generateField($field); $s[] = "});"; $s[] = ''; return $indent . implode("\n{$indent}", $s); }