本文整理汇总了PHP中Google\Protobuf\DescriptorProto::getField方法的典型用法代码示例。如果您正苦于以下问题:PHP DescriptorProto::getField方法的具体用法?PHP DescriptorProto::getField怎么用?PHP DescriptorProto::getField使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Google\Protobuf\DescriptorProto
的用法示例。
在下文中一共展示了DescriptorProto::getField方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: printMagicMethod
public function printMagicMethod(Printer $printer)
{
$printer->put(" * -*- magic methods -*-\n");
$printer->put(" *\n");
foreach ($this->descriptor->getField() as $field) {
$printer->put(" * @method `type` get`variable`()\n", "type", $this->getTypeName($field), "variable", Helper::cameraize($field->getName()));
if (FieldDescriptorProto\Label::isRepeated($field)) {
$printer->put(" * @method void append`variable`(`type2` \$value)\n", "type", $this->getTypeName($field), "variable", Helper::cameraize($field->getName()), "type2", $this->getTypeName2($field, true));
} else {
$printer->put(" * @method void set`variable`(`type2` \$value)\n", "type", $this->getTypeName($field), "variable", Helper::cameraize($field->getName()), "type2", $this->getTypeName2($field));
}
}
}
示例2: generateMessage
private function generateMessage($className, DescriptorProto $message)
{
$file = new PhpFile();
$class = $file->addClass($className);
$ns = $class->getNamespace();
$ns->addUse("Skrz\\Meta\\Protobuf\\ProtobufField", null, $protobufFieldAlias);
if (($info = $this->getSourceCodeInfo($className)) && $info->getLeadingComments()) {
$class->addComment(trim($info->getLeadingComments()));
}
$this->addAutoGeneratedWarning($class);
foreach ((array) $message->getField() as $i => $field) {
/** @var FieldDescriptorProto $field */
$propertyName = lcfirst(implode("", array_map(function ($s) {
return ucfirst($s);
}, explode("_", $field->getName()))));
$property = $class->addProperty($propertyName);
$property->setVisibility("protected");
if (($info = $this->getSourceCodeInfo($className, array_merge($this->paths[$className], [DescriptorProtoMeta::FIELD_PROTOBUF_FIELD, $i]))) && $info->getLeadingComments()) {
$property->addComment(str_replace("*/", "* /", trim($info->getLeadingComments())));
$property->addComment("");
}
switch ($field->getType()) {
case FieldDescriptorProto\TypeEnum::TYPE_DOUBLE:
$wireType = WireTypeEnum::FIXED64;
$phpType = "float";
break;
case FieldDescriptorProto\TypeEnum::TYPE_FLOAT:
$wireType = WireTypeEnum::FIXED32;
$phpType = "float";
break;
case FieldDescriptorProto\TypeEnum::TYPE_UINT64:
case FieldDescriptorProto\TypeEnum::TYPE_UINT32:
$unsigned = true;
case FieldDescriptorProto\TypeEnum::TYPE_INT64:
case FieldDescriptorProto\TypeEnum::TYPE_INT32:
$wireType = WireTypeEnum::VARINT;
$phpType = "int";
break;
case FieldDescriptorProto\TypeEnum::TYPE_FIXED64:
$unsigned = true;
case FieldDescriptorProto\TypeEnum::TYPE_SFIXED64:
$wireType = WireTypeEnum::FIXED64;
$phpType = "int";
break;
case FieldDescriptorProto\TypeEnum::TYPE_FIXED32:
$unsigned = true;
case FieldDescriptorProto\TypeEnum::TYPE_SFIXED32:
$wireType = WireTypeEnum::FIXED32;
$phpType = "int";
break;
case FieldDescriptorProto\TypeEnum::TYPE_BOOL:
$wireType = WireTypeEnum::VARINT;
$phpType = "bool";
break;
case FieldDescriptorProto\TypeEnum::TYPE_STRING:
case FieldDescriptorProto\TypeEnum::TYPE_BYTES:
$wireType = WireTypeEnum::STRING;
$phpType = "string";
break;
case FieldDescriptorProto\TypeEnum::TYPE_MESSAGE:
$wireType = WireTypeEnum::STRING;
$fieldClassName = $this->convertPackageToNamespace($field->getTypeName());
$ns->addUse($fieldClassName, null, $phpType);
break;
case FieldDescriptorProto\TypeEnum::TYPE_ENUM:
$wireType = WireTypeEnum::VARINT;
$fieldClassName = $this->convertPackageToNamespace($field->getTypeName() . "Enum");
$ns->addUse($fieldClassName, null, $see);
$phpType = "int";
break;
case FieldDescriptorProto\TypeEnum::TYPE_SINT32:
case FieldDescriptorProto\TypeEnum::TYPE_SINT64:
$wireType = WireTypeEnum::ZIGZAG;
$phpType = "int";
break;
default:
throw new \LogicException("Unhandled type '{$field->getType()}'.");
}
if ($field->getLabel() === FieldDescriptorProto\LabelEnum::LABEL_REPEATED) {
$phpType .= "[]";
}
$property->addComment("@var {$phpType}");
if (isset($see)) {
$property->addComment("@see {$see}");
unset($see);
}
$property->addComment("")->addComment("@Skrz\\Meta\\Protobuf\\ProtobufField(" . "number={$field->getNumber()}" . ", wireType=\"{$wireType}\"" . ", unsigned=" . var_export(isset($unsigned) ? $unsigned : false, true) . ", packed=" . var_export($field->getOptions() ? $field->getOptions()->getPacked() : false, true) . ")");
$getter = $class->addMethod("get" . ucfirst($propertyName));
$getter->addComment("@return {$phpType}");
$getter->addBody("return \$this->{$propertyName};");
$setter = $class->addMethod("set" . ucfirst($propertyName));
$setter->addParameter($propertyName);
$setter->addComment("@param {$phpType} \${$propertyName}")->addComment("")->addComment("@return self");
$setter->addBody("\$this->{$propertyName} = \${$propertyName};")->addBody("return \$this;");
}
return new Result($file, $class);
}
示例3: 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;
}