src/Marshaler/DynamoDb/ItemMarshaler.php
private function encodeASetValue(array $value, Field $field)
    {
        $type = $field->getType();

        /*
         * A MessageRefType is the only object/map value that can be
         * used in a set.  In this case of DynamoDb, we can store it as
         * a list of maps.
         */
        if ($type->getTypeName() === TypeName::MESSAGE_REF()) {
            $list = [];
            foreach ($value as $v) {
                $list[] = $type->encode($v, $field, $this);
            }
            return ['L' => $list];
        }

        if ($type->isString()) {
            $dynamoType = self::TYPE_STRING_SET;
        } elseif ($type->isNumeric()) {
            $dynamoType = self::TYPE_NUMBER_SET;
        } elseif ($type->isBinary()) {
            $dynamoType = self::TYPE_BINARY_SET;
        } else {
            throw new EncodeValueFailed(
                $value,
                $field,
                sprintf('%s::%s has no handling for this value.', get_called_class(), __FUNCTION__)
            );
        }

        $result = [];
        foreach ($value as $v) {
            if ($type->encodesToScalar()) {
                $result[] = (string)$type->encode($v, $field, $this);
            } else {
                $result[] = (string)$v;
            }
        }

        return [$dynamoType => $result];
    }
private function encodeASetValue(array $value, Field $field)
    {
        $type = $field->getType();

        /*
         * A MessageRefType is the only object/map value that can be
         * used in a set.  In this case of DynamoDb, we can store it as
         * a list of maps.
         */
        if ($type->getTypeName() === TypeName::MESSAGE_REF()) {
            $list = [];
            foreach ($value as $v) {
                $list[] = $type->encode($v, $field, $this);
            }
            return ['L' => $list];
        }

        if ($type->isString()) {
            $dynamoType = self::TYPE_STRING_SET;
        } elseif ($type->isNumeric()) {
            $dynamoType = self::TYPE_NUMBER_SET;
        } elseif ($type->isBinary()) {
            $dynamoType = self::TYPE_BINARY_SET;
        } else {
            throw new EncodeValueFailed(
                $value,
                $field,
                sprintf('%s::%s has no handling for this value.', get_called_class(), __FUNCTION__)
            );
        }

        $result = [];
        foreach ($value as $v) {
            if ($type->encodesToScalar()) {
                $result[] = (string)$type->encode($v, $field, $this);
            } else {
                $result[] = (string)$v;
            }
        }

        return [$dynamoType => $result];
    }
private function encodeASetValue ( array $ value , Field $ field ) { $ type = $ field -> getType ( ) ; /*
         * A MessageRefType is the only object/map value that can be
         * used in a set.  In this case of DynamoDb, we can store it as
         * a list of maps.
         */ if ( $ type -> getTypeName ( ) === TypeName :: MESSAGE_REF ( ) ) { $ list = [ ] ; foreach ( $ value as $ v ) { $ list [ ] = $ type -> encode ( $ v , $ field , $ this ) ; } return [ 'L' => $ list ] ; } if ( $ type -> isString ( ) ) { $ dynamoType = self :: TYPE_STRING_SET ; } elseif ( $ type -> isNumeric ( ) ) { $ dynamoType = self :: TYPE_NUMBER_SET ; } elseif ( $ type -> isBinary ( ) ) { $ dynamoType = self :: TYPE_BINARY_SET ; } else { throw new EncodeValueFailed ( $ value , $ field , sprintf ( '%s::%s has no handling for this value.' , get_called_class ( ) , __FUNCTION__ ) ) ; } $ result = [ ] ; foreach ( $ value as $ v ) { if ( $ type -> encodesToScalar ( ) ) { $ result [ ] = ( string ) $ type -> encode ( $ v , $ field , $ this ) ; } else { $ result [ ] = ( string ) $ v ; } } return [ $ dynamoType => $ result ] ; }
@param array $value
@param Field $field

@return mixed

@throws EncodeValueFailed
@param array $value @param Field $field