class AnyBase
Base class for Google\Protobuf\Any, this contains hand-written convenience methods like pack() and unpack().
Hierarchy
- class \Google\Protobuf\Internal\Message
- class \Google\Protobuf\Internal\AnyBase extends \Google\Protobuf\Internal\Message
Expanded class hierarchy of AnyBase
File
-
vendor/
google/ protobuf/ src/ Google/ Protobuf/ Internal/ AnyBase.php, line 9
Namespace
Google\Protobuf\InternalView source
class AnyBase extends \Google\Protobuf\Internal\Message {
const TYPE_URL_PREFIX = 'type.googleapis.com/';
/**
* This method will try to resolve the type_url in Any message to get the
* targeted message type. If failed, an error will be thrown. Otherwise,
* the method will create a message of the targeted type and fill it with
* the decoded value in Any.
* @return Message unpacked message
* @throws \Exception Type url needs to be type.googleapis.com/fully-qualified.
* @throws \Exception Class hasn't been added to descriptor pool.
* @throws \Exception cannot decode data in value field.
*/
public function unpack() {
// Get fully qualified name from type url.
$url_prifix_len = strlen(GPBUtil::TYPE_URL_PREFIX);
if (substr($this->type_url, 0, $url_prifix_len) != GPBUtil::TYPE_URL_PREFIX) {
throw new \Exception("Type url needs to be type.googleapis.com/fully-qulified");
}
$fully_qualified_name = substr($this->type_url, $url_prifix_len);
// Create message according to fully qualified name.
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
$desc = $pool->getDescriptorByProtoName($fully_qualified_name);
if (is_null($desc)) {
throw new \Exception("Class " . $fully_qualified_name . " hasn't been added to descriptor pool");
}
$klass = $desc->getClass();
$msg = new $klass();
// Merge data into message.
$msg->mergeFromString($this->value);
return $msg;
}
/**
* The type_url will be created according to the given message’s type and
* the value is encoded data from the given message..
* @param Message $msg A proto message.
*/
public function pack($msg) {
if (!$msg instanceof Message) {
trigger_error("Given parameter is not a message instance.", E_USER_ERROR);
return;
}
// Set value using serialized message.
$this->value = $msg->serializeToString();
// Set type url.
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
$desc = $pool->getDescriptorByClassName(get_class($msg));
$fully_qualified_name = $desc->getFullName();
$this->type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name;
}
/**
* This method returns whether the type_url in any_message is corresponded
* to the given class.
* @param string $klass The fully qualified PHP class name of a proto message type.
*/
public function is($klass) {
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
$desc = $pool->getDescriptorByClassName($klass);
$fully_qualified_name = $desc->getFullName();
$type_url = GPBUtil::TYPE_URL_PREFIX . $fully_qualified_name;
return $this->type_url === $type_url;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
AnyBase::is | public | function | This method returns whether the type_url in any_message is corresponded to the given class. |
|
AnyBase::pack | public | function | The type_url will be created according to the given message’s type and the value is encoded data from the given message.. |
|
AnyBase::TYPE_URL_PREFIX | constant | |||
AnyBase::unpack | public | function | This method will try to resolve the type_url in Any message to get the targeted message type. If failed, an error will be thrown. Otherwise, the method will create a message of the targeted type and fill it with the decoded value in Any. |
|
Message::$desc | private | property | @ignore | |
Message::$unknown | private | property | ||
Message::appendHelper | private | function | ||
Message::byteSize | public | function | @ignore | |
Message::clear | public | function | Clear all containing fields. | |
Message::convertJsonValueToProtoValue | private | function | ||
Message::defaultValue | private | function | @ignore | |
Message::discardUnknownFields | public | function | Clear all unknown fields previously parsed. | |
Message::existField | private | function | @ignore | |
Message::fieldByteSize | private | function | @ignore | |
Message::fieldDataOnlyByteSize | private | function | @ignore | |
Message::fieldDataOnlyJsonByteSize | private | function | @ignore | |
Message::fieldJsonByteSize | private | function | @ignore | |
Message::hasOneof | protected | function | ||
Message::initWithDescriptor | private | function | @ignore | |
Message::initWithGeneratedPool | private | function | @ignore | |
Message::jsonByteSize | public | function | @ignore | |
Message::kvUpdateHelper | private | function | ||
Message::mergeFrom | public | function | Merges the contents of the specified message into current message. | |
Message::mergeFromArray | protected | function | Populates the message from a user-supplied PHP array. Array keys correspond to Message properties and nested message properties. |
|
Message::mergeFromArrayJsonImpl | private | function | ||
Message::mergeFromJsonArray | protected | function | ||
Message::mergeFromJsonString | public | function | Parses a json string to protobuf message. | |
Message::mergeFromString | public | function | Parses a protocol buffer contained in a string. | |
Message::normalizeArrayElementsToMessageType | private static | function | Tries to normalize the elements in $value into a provided protobuf wrapper type $class. If $value is any type other than array, we do not do any conversion, and instead rely on the existing protobuf type checking. If $value is an array, we process… |
|
Message::normalizeToMessageType | private static | function | Tries to normalize $value into a provided protobuf wrapper type $class. If $value is any type other than an object, we attempt to construct an instance of $class and assign $value to it using the setValue method shared by all wrapper types. |
|
Message::parseFieldFromStream | private | function | @ignore | |
Message::parseFieldFromStreamNoTag | private static | function | @ignore | |
Message::parseFromJsonStream | public | function | @ignore | |
Message::parseFromStream | public | function | @ignore | |
Message::readOneof | protected | function | ||
Message::readWrapperValue | protected | function | ||
Message::repeatedFieldDataOnlyByteSize | private | function | @ignore | |
Message::serializeFieldToJsonStream | private | function | @ignore | |
Message::serializeFieldToStream | private | function | @ignore | |
Message::serializeMapFieldToStream | private | function | @ignore | |
Message::serializeRepeatedFieldToStream | private | function | @ignore | |
Message::serializeSingularFieldToStream | private | function | @ignore | |
Message::serializeToJsonStream | public | function | @ignore | |
Message::serializeToJsonString | public | function | Serialize the message to json string. | |
Message::serializeToStream | public | function | @ignore | |
Message::serializeToString | public | function | Serialize the message to string. | |
Message::skipField | private | function | @ignore | |
Message::whichOneof | protected | function | ||
Message::writeOneof | protected | function | ||
Message::writeWrapperValue | protected | function | ||
Message::__construct | public | function | @ignore | 115 |
Message::__debugInfo | public | function |