Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Message.php

function Message::clear

Clear all containing fields.

Return value

null

1 call to Message::clear()
Message::mergeFromJsonArray in vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php

File

vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php, line 527

Class

Message
Parent class of all proto messages. Users should not instantiate this class or extend this class or its child classes by their own. See the comment of specific functions for more details.

Namespace

Google\Protobuf\Internal

Code

public function clear() {
    $this->unknown = "";
    foreach ($this->desc
        ->getField() as $field) {
        $setter = $field->getSetter();
        if ($field->isMap()) {
            $message_type = $field->getMessageType();
            $key_field = $message_type->getFieldByNumber(1);
            $value_field = $message_type->getFieldByNumber(2);
            switch ($value_field->getType()) {
                case GPBType::MESSAGE:
                case GPBType::GROUP:
                    $map_field = new MapField($key_field->getType(), $value_field->getType(), $value_field->getMessageType()
                        ->getClass());
                    $this->{$setter}($map_field);
                    break;
                case GPBType::ENUM:
                    $map_field = new MapField($key_field->getType(), $value_field->getType(), $value_field->getEnumType()
                        ->getClass());
                    $this->{$setter}($map_field);
                    break;
                default:
                    $map_field = new MapField($key_field->getType(), $value_field->getType());
                    $this->{$setter}($map_field);
                    break;
            }
        }
        else {
            if ($field->getLabel() === GPBLabel::REPEATED) {
                switch ($field->getType()) {
                    case GPBType::MESSAGE:
                    case GPBType::GROUP:
                        $repeated_field = new RepeatedField($field->getType(), $field->getMessageType()
                            ->getClass());
                        $this->{$setter}($repeated_field);
                        break;
                    case GPBType::ENUM:
                        $repeated_field = new RepeatedField($field->getType(), $field->getEnumType()
                            ->getClass());
                        $this->{$setter}($repeated_field);
                        break;
                    default:
                        $repeated_field = new RepeatedField($field->getType());
                        $this->{$setter}($repeated_field);
                        break;
                }
            }
            else {
                if ($field->getOneofIndex() !== -1) {
                    $oneof = $this->desc
                        ->getOneofDecl()[$field->getOneofIndex()];
                    $oneof_name = $oneof->getName();
                    $this->{$oneof_name} = new OneofField($oneof);
                }
                else {
                    if ($field->getLabel() === GPBLabel::OPTIONAL) {
                        switch ($field->getType()) {
                            case GPBType::DOUBLE:
                            case GPBType::FLOAT:
                                $this->{$setter}(0.0);
                                break;
                            case GPBType::INT32:
                            case GPBType::FIXED32:
                            case GPBType::UINT32:
                            case GPBType::SFIXED32:
                            case GPBType::SINT32:
                            case GPBType::ENUM:
                                $this->{$setter}(0);
                                break;
                            case GPBType::BOOL:
                                $this->{$setter}(false);
                                break;
                            case GPBType::STRING:
                            case GPBType::BYTES:
                                $this->{$setter}("");
                                break;
                            case GPBType::GROUP:
                            case GPBType::MESSAGE:
                                $null = null;
                                $this->{$setter}($null);
                                break;
                        }
                        if (PHP_INT_SIZE == 4) {
                            switch ($field->getType()) {
                                case GPBType::INT64:
                                case GPBType::UINT64:
                                case GPBType::FIXED64:
                                case GPBType::SFIXED64:
                                case GPBType::SINT64:
                                    $this->{$setter}("0");
                            }
                        }
                        else {
                            switch ($field->getType()) {
                                case GPBType::INT64:
                                case GPBType::UINT64:
                                case GPBType::FIXED64:
                                case GPBType::SFIXED64:
                                case GPBType::SINT64:
                                    $this->{$setter}(0);
                            }
                        }
                    }
                }
            }
        }
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal