本文整理汇总了PHP中Google\Protobuf\FieldDescriptorProto::getNumber方法的典型用法代码示例。如果您正苦于以下问题:PHP FieldDescriptorProto::getNumber方法的具体用法?PHP FieldDescriptorProto::getNumber怎么用?PHP FieldDescriptorProto::getNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Google\Protobuf\FieldDescriptorProto
的用法示例。
在下文中一共展示了FieldDescriptorProto::getNumber方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generateExtensionField
/**
* @param \Protobuf\Compiler\Entity $entity
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string
*/
protected function generateExtensionField(Entity $entity, FieldDescriptorProto $field)
{
$name = $field->getName();
$number = $field->getNumber();
$docBlock = $this->getDocBlockType($field);
$type = $this->getFieldTypeName($field);
$label = $this->getFieldLabelName($field);
$property = PropertyGenerator::fromArray(['static' => true, 'name' => $name, 'visibility' => PropertyGenerator::VISIBILITY_PROTECTED, 'docblock' => ['shortDescription' => "Extension field : {$name} {$label} {$type} = {$number}", 'tags' => [['name' => 'var', 'description' => '\\Protobuf\\Extension']]]]);
$property->getDocblock()->setWordWrap(false);
return $property;
}
示例2: generateRequiredFieldException
/**
* @param \Protobuf\Compiler\Entity $entity
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
protected function generateRequiredFieldException(Entity $entity, FieldDescriptorProto $field)
{
$name = $field->getName();
$label = $field->getLabel();
$tag = $field->getNumber();
$isRequired = $label === Label::LABEL_REQUIRED();
if (!$isRequired) {
return [];
}
$class = $entity->getNamespacedName();
$format = 'Field "%s#%s" (tag %s) is required but has no value.';
$message = var_export(sprintf($format, $class, $name, $tag), true);
$body[] = 'if ($this->' . $name . ' === null) {';
$body[] = ' throw new \\UnexpectedValueException(' . $message . ');';
$body[] = '}';
$body[] = null;
return $body;
}
示例3: generateFieldWriteStatement
/**
* @param \Protobuf\Compiler\Entity $entity
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
public function generateFieldWriteStatement(Entity $entity, FieldDescriptorProto $field)
{
$body = [];
$name = $field->getName();
$type = $field->getType();
$rule = $field->getLabel();
$tag = $field->getNumber();
$options = $field->getOptions();
$variable = $this->targetVar ?: '$this->' . $name;
$isPack = $options ? $options->getPacked() : false;
$wire = $isPack ? WireFormat::WIRE_LENGTH : WireFormat::getWireType($type->value(), null);
$key = WireFormat::getFieldKey($tag, $wire);
if ($rule === Label::LABEL_REPEATED() && $isPack) {
$itemValSttm = $type === Type::TYPE_ENUM() ? '$val->value()' : '$val';
$body[] = '$innerSize = 0;';
$body[] = '$calculator = $sizeContext->getSizeCalculator();';
$body[] = null;
$body[] = 'foreach (' . $variable . ' as $val) {';
$body[] = ' $innerSize += ' . $this->generateValueSizeStatement($type->value(), $itemValSttm) . ';';
$body[] = '}';
$body[] = null;
$body[] = '$writer->writeVarint($stream, ' . $key . ');';
$body[] = '$writer->writeVarint($stream, $innerSize);';
$body[] = null;
$body[] = 'foreach (' . $variable . ' as $val) {';
$body[] = ' ' . $this->generateWriteScalarStatement($type->value(), $itemValSttm) . ';';
$body[] = '}';
return $body;
}
if ($type === Type::TYPE_MESSAGE() && $rule === Label::LABEL_REPEATED()) {
$body[] = 'foreach (' . $variable . ' as $val) {';
$body[] = ' $writer->writeVarint($stream, ' . $key . ');';
$body[] = ' $writer->writeVarint($stream, $val->serializedSize($sizeContext));';
$body[] = ' $val->writeTo($context);';
$body[] = '}';
return $body;
}
if ($type === Type::TYPE_ENUM() && $rule === LABEL::LABEL_REPEATED()) {
$body[] = 'foreach (' . $variable . ' as $val) {';
$body[] = ' $writer->writeVarint($stream, ' . $key . ');';
$body[] = ' ' . $this->generateWriteScalarStatement($type->value(), '$val->value()') . ';';
$body[] = '}';
return $body;
}
if ($rule === Label::LABEL_REPEATED()) {
$body[] = 'foreach (' . $variable . ' as $val) {';
$body[] = ' $writer->writeVarint($stream, ' . $key . ');';
$body[] = ' ' . $this->generateWriteScalarStatement($type->value(), '$val') . ';';
$body[] = '}';
return $body;
}
if ($type === Type::TYPE_ENUM()) {
$body[] = sprintf('$writer->writeVarint($stream, %s);', $key);
$body[] = $this->generateWriteScalarStatement($type->value(), $variable . '->value()') . ';';
return $body;
}
if ($type !== Type::TYPE_MESSAGE()) {
$body[] = sprintf('$writer->writeVarint($stream, %s);', $key);
$body[] = $this->generateWriteScalarStatement($type->value(), $variable) . ';';
return $body;
}
$body[] = '$writer->writeVarint($stream, ' . $key . ');';
$body[] = '$writer->writeVarint($stream, ' . $variable . '->serializedSize($sizeContext));';
$body[] = $variable . '->writeTo($context);';
return $body;
}
示例4: generateFieldCondition
/**
* @param \Protobuf\Compiler\Entity $entity
* @param google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
protected function generateFieldCondition(Entity $entity, FieldDescriptorProto $field)
{
$tag = $field->getNumber();
$lines = $this->generateFieldReadStatement($entity, $field);
$lines = $this->addIndentation($lines, 1);
$body[] = 'if ($tag === ' . $tag . ') {';
$body = array_merge($body, $lines);
$body[] = '}';
$body[] = null;
return $body;
}
示例5: generateAccessors
protected function generateAccessors(proto\FieldDescriptorProto $field, $ns, $indent)
{
$tag = $field->getNumber();
$name = $field->getName();
$camel = $this->compiler->camelize(ucfirst($name));
$typehint = '';
$typedoc = $this->getJavaDocType($field);
if (0 === strpos($typedoc, '\\')) {
$typehint = $typedoc;
}
// hasXXX
$s[] = "/**";
$s[] = " * Check if <{$name}> has a value";
$s[] = " *";
$s[] = " * @return boolean";
$s[] = " */";
$s[] = "public function has{$camel}(){";
$s[] = " return \$this->_has({$tag});";
$s[] = "}";
$s[] = "";
// clearXXX
$s[] = "/**";
$s[] = " * Clear <{$name}> value";
$s[] = " *";
$s[] = " * @return \\" . $this->normalizeNS($ns);
$s[] = " */";
$s[] = "public function clear{$camel}(){";
$s[] = " return \$this->_clear({$tag});";
$s[] = "}";
$s[] = "";
if ($field->getLabel() === Protobuf::RULE_REPEATED) {
// getXXX
$s[] = "/**";
$s[] = " * Get <{$name}> value";
$s[] = " *";
$s[] = " * @param int \$idx";
$s[] = " * @return {$typedoc}";
$s[] = " */";
$s[] = "public function get{$camel}(\$idx = NULL){";
$s[] = " return \$this->_get({$tag}, \$idx);";
$s[] = "}";
$s[] = "";
// setXXX
$s[] = "/**";
$s[] = " * Set <{$name}> value";
$s[] = " *";
$s[] = " * @param {$typedoc} \$value";
$s[] = " * @return \\" . $this->normalizeNS($ns);
$s[] = " */";
$s[] = "public function set{$camel}({$typehint} \$value, \$idx = NULL){";
$s[] = " return \$this->_set({$tag}, \$value, \$idx);";
$s[] = "}";
$s[] = "";
$s[] = "/**";
$s[] = " * Get all elements of <{$name}>";
$s[] = " *";
$s[] = " * @return {$typedoc}[]";
$s[] = " */";
$s[] = "public function get{$camel}List(){";
$s[] = " return \$this->_get({$tag});";
$s[] = "}";
$s[] = "";
$s[] = "/**";
$s[] = " * Add a new element to <{$name}>";
$s[] = " *";
$s[] = " * @param {$typedoc} \$value";
$s[] = " * @return \\" . $this->normalizeNS($ns);
$s[] = " */";
$s[] = "public function add{$camel}({$typehint} \$value){";
$s[] = " return \$this->_add({$tag}, \$value);";
$s[] = "}";
$s[] = "";
} else {
// getXXX
$s[] = "/**";
$s[] = " * Get <{$name}> value";
$s[] = " *";
$s[] = " * @return {$typedoc}";
$s[] = " */";
$s[] = "public function get{$camel}(){";
$s[] = " return \$this->_get({$tag});";
$s[] = "}";
$s[] = "";
// setXXX
$s[] = "/**";
$s[] = " * Set <{$name}> value";
$s[] = " *";
$s[] = " * @param {$typedoc} \$value";
$s[] = " * @return \\" . $this->normalizeNS($ns);
$s[] = " */";
$s[] = "public function set{$camel}({$typehint} \$value){";
$s[] = " return \$this->_set({$tag}, \$value);";
$s[] = "}";
$s[] = "";
}
return $indent . implode(PHP_EOL . $indent, $s);
}
示例6: generateFieldReadStatement
/**
* @param \Protobuf\Compiler\Entity $entity
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
public function generateFieldReadStatement(Entity $entity, FieldDescriptorProto $field)
{
$body = [];
$reference = null;
$type = $field->getType();
$name = $field->getName();
$rule = $field->getLabel();
$tag = $field->getNumber();
$options = $field->getOptions();
$isPack = $options ? $options->getPacked() : false;
$variable = $this->targetVar ?: '$this->' . $name;
$breakSttm = $this->getBreakStatement($variable);
if ($field->hasTypeName()) {
$typeName = $field->getTypeName();
$typeEntity = $this->getEntity($typeName);
$reference = $typeEntity->getNamespacedName();
}
if (!$isPack) {
$body[] = sprintf('\\Protobuf\\WireFormat::assertWireType($wire, %s);', $type->value());
$body[] = null;
}
if ($rule === Label::LABEL_REPEATED() && $isPack) {
$readSttm = $type === Type::TYPE_ENUM() ? $reference . '::valueOf(' . $this->generateReadScalarStatement($type->value()) . ')' : $this->generateReadScalarStatement($type->value());
$body[] = '$innerSize = $reader->readVarint($stream);';
$body[] = '$innerLimit = $stream->tell() + $innerSize;';
$body[] = null;
$body[] = 'if (' . $variable . ' === null) {';
$body[] = ' ' . $variable . ' = new ' . $this->getCollectionClassName($field) . '();';
$body[] = '}';
$body[] = null;
$body[] = 'while ($stream->tell() < $innerLimit) {';
$body[] = ' ' . $variable . '->add(' . $readSttm . ');';
$body[] = '}';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
if ($type === Type::TYPE_MESSAGE() && $rule === Label::LABEL_REPEATED()) {
$body[] = '$innerSize = $reader->readVarint($stream);';
$body[] = '$innerMessage = new ' . $reference . '();';
$body[] = null;
$body[] = 'if (' . $variable . ' === null) {';
$body[] = ' ' . $variable . ' = new \\Protobuf\\MessageCollection();';
$body[] = '}';
$body[] = null;
$body[] = $variable . '->add($innerMessage);';
$body[] = null;
$body[] = '$context->setLength($innerSize);';
$body[] = '$innerMessage->readFrom($context);';
$body[] = '$context->setLength($length);';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
if ($type === Type::TYPE_ENUM() && $rule === LABEL::LABEL_REPEATED()) {
$body[] = 'if (' . $variable . ' === null) {';
$body[] = ' ' . $variable . ' = new ' . $this->getCollectionClassName($field) . '();';
$body[] = '}';
$body[] = null;
$body[] = $variable . '->add(' . $reference . '::valueOf(' . $this->generateReadScalarStatement($type->value()) . '));';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
if ($type === Type::TYPE_MESSAGE()) {
$body[] = '$innerSize = $reader->readVarint($stream);';
$body[] = '$innerMessage = new ' . $reference . '();';
$body[] = null;
$body[] = $variable . ' = $innerMessage;';
$body[] = null;
$body[] = '$context->setLength($innerSize);';
$body[] = '$innerMessage->readFrom($context);';
$body[] = '$context->setLength($length);';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
if ($type === Type::TYPE_ENUM()) {
$body[] = $variable . ' = ' . $reference . '::valueOf(' . $this->generateReadScalarStatement($type->value()) . ');';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
if ($rule !== LABEL::LABEL_REPEATED()) {
$body[] = $variable . ' = ' . $this->generateReadScalarStatement($type->value()) . ';';
$body[] = null;
$body[] = $breakSttm;
return $body;
}
$body[] = 'if (' . $variable . ' === null) {';
$body[] = ' ' . $variable . ' = new ' . $this->getCollectionClassName($field) . '();';
$body[] = '}';
$body[] = null;
$body[] = $variable . '->add(' . $this->generateReadScalarStatement($type->value()) . ');';
//.........这里部分代码省略.........
示例7: generateRequiredFieldException
/**
* @param \Protobuf\Compiler\Entity $entity
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
protected function generateRequiredFieldException(Entity $entity, FieldDescriptorProto $field)
{
$name = $field->getName();
$tag = $field->getNumber();
$class = $entity->getNamespacedName();
$format = 'Field "%s" (tag %s) is required but has no value.';
$message = var_export(sprintf($format, $name, $tag), true);
$body[] = 'if ( ! isset($values[\'' . $name . '\'])) {';
$body[] = ' throw new \\InvalidArgumentException(' . $message . ');';
$body[] = '}';
return $body;
}
示例8: printExtension
public function printExtension(Printer $printer, FieldDescriptorProto $field)
{
if (ExtensionPool::has($field->getExtendee(), $field->getNumber())) {
// NOTE: already registered.
return;
}
ExtensionPool::register($field->getExtendee(), $field->getNumber(), $field);
$printer->put("\$registry->add('`message`', `extension`, new \\ProtocolBuffers\\FieldDescriptor(array(\n", "message", Helper::getExtendeeClassName($field), "extension", $field->getNumber());
$printer->indent();
$printer->put("\"type\" => `type`,\n", "type", Helper::getFieldTypeName($field));
$printer->put("\"name\" => \"`name`\",\n", "name", $field->getName());
$printer->put("\"required\" => `required`,\n", "required", FieldDescriptorProto\Label::isRequired($field) ? "true" : "false");
$printer->put("\"optional\" => `optional`,\n", "optional", FieldDescriptorProto\Label::isOptional($field) ? "true" : "false");
$printer->put("\"repeated\" => `repeated`,\n", "repeated", FieldDescriptorProto\Label::isRepeated($field) ? "true" : "false");
$printer->put("\"packable\" => `packable`,\n", "packable", FieldDescriptorProto\Label::isPacked($field) ? "true" : "false");
$printer->put("\"default\" => `value`,\n", "value", $this->defaultValueAsString($field));
if (FieldDescriptorProto\Type::isMessage($field)) {
$name = $field->getTypeName();
$descriptor = MessagePool::get($name);
$printer->put("\"message\" => '`message`',\n", "message", Helper::getClassName($descriptor, true));
}
$printer->outdent();
$printer->put(")));\n");
}
示例9: generateFieldBody
/**
* @param \google\protobuf\FieldDescriptorProto $field
*
* @return string[]
*/
protected function generateFieldBody(FieldDescriptorProto $field)
{
$lines = [];
$name = $field->getName();
$number = $field->getNumber();
$typeName = $field->getTypeName();
$extendee = $field->getExtendee();
$type = $field->getType()->name();
$label = $field->getLabel()->name();
$default = $this->getDefaultFieldValue($field);
$values = ['number' => var_export($number, true), 'name' => var_export($name, true), 'type' => '\\google\\protobuf\\FieldDescriptorProto\\Type::' . $type . '()', 'label' => '\\google\\protobuf\\FieldDescriptorProto\\Label::' . $label . '()'];
if ($extendee) {
$values['extendee'] = var_export($extendee, true);
}
if ($typeName) {
$values['type_name'] = var_export($typeName, true);
}
if ($field->hasDefaultValue()) {
$values['default_value'] = $default;
}
$lines[] = '\\google\\protobuf\\FieldDescriptorProto::fromArray([';
$lines = array_merge($lines, $this->generateArrayLines($values));
$lines[] = ']),';
return $lines;
}