Skip to content

Commit 9aa85a2

Browse files
authored
Allow passing explicit null values for optional input members (#1542)
This makes it easier to define the array literal for input objects as PHP does not have a syntax sugar for conditional keys in an array literal. This is consistent with the generated code for value objects. Even though input objects allow to omit required members in the constructor shape (as they can be set later by using the setter), the phpdoc type still does not allow passing null explicitly (even though the code would deal with it until the validation run) so that static analysis tools can catch mistakes there. Passing a required member explicitly is intended to pass a valid value for it and not a potentially missing one.
1 parent 24e9f5e commit 9aa85a2

14 files changed

+291
-291
lines changed

src/DynamoDbClient.php

Lines changed: 97 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class DynamoDbClient extends AbstractApi
135135
*
136136
* @param array{
137137
* RequestItems: array<string, KeysAndAttributes|array>,
138-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
138+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
139139
* '@region'?: string|null,
140140
* }|BatchGetItemInput $input
141141
*
@@ -222,8 +222,8 @@ public function batchGetItem($input): BatchGetItemOutput
222222
*
223223
* @param array{
224224
* RequestItems: array<string, array>,
225-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
226-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
225+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
226+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
227227
* '@region'?: string|null,
228228
* }|BatchWriteItemInput $input
229229
*
@@ -269,15 +269,15 @@ public function batchWriteItem($input): BatchWriteItemOutput
269269
* AttributeDefinitions: array<AttributeDefinition|array>,
270270
* TableName: string,
271271
* KeySchema: array<KeySchemaElement|array>,
272-
* LocalSecondaryIndexes?: array<LocalSecondaryIndex|array>,
273-
* GlobalSecondaryIndexes?: array<GlobalSecondaryIndex|array>,
274-
* BillingMode?: BillingMode::*,
275-
* ProvisionedThroughput?: ProvisionedThroughput|array,
276-
* StreamSpecification?: StreamSpecification|array,
277-
* SSESpecification?: SSESpecification|array,
278-
* Tags?: array<Tag|array>,
279-
* TableClass?: TableClass::*,
280-
* DeletionProtectionEnabled?: bool,
272+
* LocalSecondaryIndexes?: null|array<LocalSecondaryIndex|array>,
273+
* GlobalSecondaryIndexes?: null|array<GlobalSecondaryIndex|array>,
274+
* BillingMode?: null|BillingMode::*,
275+
* ProvisionedThroughput?: null|ProvisionedThroughput|array,
276+
* StreamSpecification?: null|StreamSpecification|array,
277+
* SSESpecification?: null|SSESpecification|array,
278+
* Tags?: null|array<Tag|array>,
279+
* TableClass?: null|TableClass::*,
280+
* DeletionProtectionEnabled?: null|bool,
281281
* '@region'?: string|null,
282282
* }|CreateTableInput $input
283283
*
@@ -316,15 +316,15 @@ public function createTable($input): CreateTableOutput
316316
* @param array{
317317
* TableName: string,
318318
* Key: array<string, AttributeValue|array>,
319-
* Expected?: array<string, ExpectedAttributeValue|array>,
320-
* ConditionalOperator?: ConditionalOperator::*,
321-
* ReturnValues?: ReturnValue::*,
322-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
323-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
324-
* ConditionExpression?: string,
325-
* ExpressionAttributeNames?: array<string, string>,
326-
* ExpressionAttributeValues?: array<string, AttributeValue|array>,
327-
* ReturnValuesOnConditionCheckFailure?: ReturnValuesOnConditionCheckFailure::*,
319+
* Expected?: null|array<string, ExpectedAttributeValue|array>,
320+
* ConditionalOperator?: null|ConditionalOperator::*,
321+
* ReturnValues?: null|ReturnValue::*,
322+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
323+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
324+
* ConditionExpression?: null|string,
325+
* ExpressionAttributeNames?: null|array<string, string>,
326+
* ExpressionAttributeValues?: null|array<string, AttributeValue|array>,
327+
* ReturnValuesOnConditionCheckFailure?: null|ReturnValuesOnConditionCheckFailure::*,
328328
* '@region'?: string|null,
329329
* }|DeleteItemInput $input
330330
*
@@ -473,12 +473,12 @@ public function describeTable($input): DescribeTableOutput
473473
*
474474
* @param array{
475475
* Statement: string,
476-
* Parameters?: array<AttributeValue|array>,
477-
* ConsistentRead?: bool,
478-
* NextToken?: string,
479-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
480-
* Limit?: int,
481-
* ReturnValuesOnConditionCheckFailure?: ReturnValuesOnConditionCheckFailure::*,
476+
* Parameters?: null|array<AttributeValue|array>,
477+
* ConsistentRead?: null|bool,
478+
* NextToken?: null|string,
479+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
480+
* Limit?: null|int,
481+
* ReturnValuesOnConditionCheckFailure?: null|ReturnValuesOnConditionCheckFailure::*,
482482
* '@region'?: string|null,
483483
* }|ExecuteStatementInput $input
484484
*
@@ -522,11 +522,11 @@ public function executeStatement($input): ExecuteStatementOutput
522522
* @param array{
523523
* TableName: string,
524524
* Key: array<string, AttributeValue|array>,
525-
* AttributesToGet?: string[],
526-
* ConsistentRead?: bool,
527-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
528-
* ProjectionExpression?: string,
529-
* ExpressionAttributeNames?: array<string, string>,
525+
* AttributesToGet?: null|string[],
526+
* ConsistentRead?: null|bool,
527+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
528+
* ProjectionExpression?: null|string,
529+
* ExpressionAttributeNames?: null|array<string, string>,
530530
* '@region'?: string|null,
531531
* }|GetItemInput $input
532532
*
@@ -556,8 +556,8 @@ public function getItem($input): GetItemOutput
556556
* @see https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-dynamodb-2012-08-10.html#listtables
557557
*
558558
* @param array{
559-
* ExclusiveStartTableName?: string,
560-
* Limit?: int,
559+
* ExclusiveStartTableName?: null|string,
560+
* Limit?: null|int,
561561
* '@region'?: string|null,
562562
* }|ListTablesInput $input
563563
*
@@ -603,15 +603,15 @@ public function listTables($input = []): ListTablesOutput
603603
* @param array{
604604
* TableName: string,
605605
* Item: array<string, AttributeValue|array>,
606-
* Expected?: array<string, ExpectedAttributeValue|array>,
607-
* ReturnValues?: ReturnValue::*,
608-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
609-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
610-
* ConditionalOperator?: ConditionalOperator::*,
611-
* ConditionExpression?: string,
612-
* ExpressionAttributeNames?: array<string, string>,
613-
* ExpressionAttributeValues?: array<string, AttributeValue|array>,
614-
* ReturnValuesOnConditionCheckFailure?: ReturnValuesOnConditionCheckFailure::*,
606+
* Expected?: null|array<string, ExpectedAttributeValue|array>,
607+
* ReturnValues?: null|ReturnValue::*,
608+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
609+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
610+
* ConditionalOperator?: null|ConditionalOperator::*,
611+
* ConditionExpression?: null|string,
612+
* ExpressionAttributeNames?: null|array<string, string>,
613+
* ExpressionAttributeValues?: null|array<string, AttributeValue|array>,
614+
* ReturnValuesOnConditionCheckFailure?: null|ReturnValuesOnConditionCheckFailure::*,
615615
* '@region'?: string|null,
616616
* }|PutItemInput $input
617617
*
@@ -686,22 +686,22 @@ public function putItem($input): PutItemOutput
686686
*
687687
* @param array{
688688
* TableName: string,
689-
* IndexName?: string,
690-
* Select?: Select::*,
691-
* AttributesToGet?: string[],
692-
* Limit?: int,
693-
* ConsistentRead?: bool,
694-
* KeyConditions?: array<string, Condition|array>,
695-
* QueryFilter?: array<string, Condition|array>,
696-
* ConditionalOperator?: ConditionalOperator::*,
697-
* ScanIndexForward?: bool,
698-
* ExclusiveStartKey?: array<string, AttributeValue|array>,
699-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
700-
* ProjectionExpression?: string,
701-
* FilterExpression?: string,
702-
* KeyConditionExpression?: string,
703-
* ExpressionAttributeNames?: array<string, string>,
704-
* ExpressionAttributeValues?: array<string, AttributeValue|array>,
689+
* IndexName?: null|string,
690+
* Select?: null|Select::*,
691+
* AttributesToGet?: null|string[],
692+
* Limit?: null|int,
693+
* ConsistentRead?: null|bool,
694+
* KeyConditions?: null|array<string, Condition|array>,
695+
* QueryFilter?: null|array<string, Condition|array>,
696+
* ConditionalOperator?: null|ConditionalOperator::*,
697+
* ScanIndexForward?: null|bool,
698+
* ExclusiveStartKey?: null|array<string, AttributeValue|array>,
699+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
700+
* ProjectionExpression?: null|string,
701+
* FilterExpression?: null|string,
702+
* KeyConditionExpression?: null|string,
703+
* ExpressionAttributeNames?: null|array<string, string>,
704+
* ExpressionAttributeValues?: null|array<string, AttributeValue|array>,
705705
* '@region'?: string|null,
706706
* }|QueryInput $input
707707
*
@@ -764,21 +764,21 @@ public function query($input): QueryOutput
764764
*
765765
* @param array{
766766
* TableName: string,
767-
* IndexName?: string,
768-
* AttributesToGet?: string[],
769-
* Limit?: int,
770-
* Select?: Select::*,
771-
* ScanFilter?: array<string, Condition|array>,
772-
* ConditionalOperator?: ConditionalOperator::*,
773-
* ExclusiveStartKey?: array<string, AttributeValue|array>,
774-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
775-
* TotalSegments?: int,
776-
* Segment?: int,
777-
* ProjectionExpression?: string,
778-
* FilterExpression?: string,
779-
* ExpressionAttributeNames?: array<string, string>,
780-
* ExpressionAttributeValues?: array<string, AttributeValue|array>,
781-
* ConsistentRead?: bool,
767+
* IndexName?: null|string,
768+
* AttributesToGet?: null|string[],
769+
* Limit?: null|int,
770+
* Select?: null|Select::*,
771+
* ScanFilter?: null|array<string, Condition|array>,
772+
* ConditionalOperator?: null|ConditionalOperator::*,
773+
* ExclusiveStartKey?: null|array<string, AttributeValue|array>,
774+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
775+
* TotalSegments?: null|int,
776+
* Segment?: null|int,
777+
* ProjectionExpression?: null|string,
778+
* FilterExpression?: null|string,
779+
* ExpressionAttributeNames?: null|array<string, string>,
780+
* ExpressionAttributeValues?: null|array<string, AttributeValue|array>,
781+
* ConsistentRead?: null|bool,
782782
* '@region'?: string|null,
783783
* }|ScanInput $input
784784
*
@@ -879,9 +879,9 @@ public function tableNotExists($input): TableNotExistsWaiter
879879
*
880880
* @param array{
881881
* TransactItems: array<TransactWriteItem|array>,
882-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
883-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
884-
* ClientRequestToken?: string,
882+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
883+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
884+
* ClientRequestToken?: null|string,
885885
* '@region'?: string|null,
886886
* }|TransactWriteItemsInput $input
887887
*
@@ -924,17 +924,17 @@ public function transactWriteItems($input): TransactWriteItemsOutput
924924
* @param array{
925925
* TableName: string,
926926
* Key: array<string, AttributeValue|array>,
927-
* AttributeUpdates?: array<string, AttributeValueUpdate|array>,
928-
* Expected?: array<string, ExpectedAttributeValue|array>,
929-
* ConditionalOperator?: ConditionalOperator::*,
930-
* ReturnValues?: ReturnValue::*,
931-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
932-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
933-
* UpdateExpression?: string,
934-
* ConditionExpression?: string,
935-
* ExpressionAttributeNames?: array<string, string>,
936-
* ExpressionAttributeValues?: array<string, AttributeValue|array>,
937-
* ReturnValuesOnConditionCheckFailure?: ReturnValuesOnConditionCheckFailure::*,
927+
* AttributeUpdates?: null|array<string, AttributeValueUpdate|array>,
928+
* Expected?: null|array<string, ExpectedAttributeValue|array>,
929+
* ConditionalOperator?: null|ConditionalOperator::*,
930+
* ReturnValues?: null|ReturnValue::*,
931+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
932+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
933+
* UpdateExpression?: null|string,
934+
* ConditionExpression?: null|string,
935+
* ExpressionAttributeNames?: null|array<string, string>,
936+
* ExpressionAttributeValues?: null|array<string, AttributeValue|array>,
937+
* ReturnValuesOnConditionCheckFailure?: null|ReturnValuesOnConditionCheckFailure::*,
938938
* '@region'?: string|null,
939939
* }|UpdateItemInput $input
940940
*
@@ -985,16 +985,16 @@ public function updateItem($input): UpdateItemOutput
985985
* @see https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-dynamodb-2012-08-10.html#updatetable
986986
*
987987
* @param array{
988-
* AttributeDefinitions?: array<AttributeDefinition|array>,
988+
* AttributeDefinitions?: null|array<AttributeDefinition|array>,
989989
* TableName: string,
990-
* BillingMode?: BillingMode::*,
991-
* ProvisionedThroughput?: ProvisionedThroughput|array,
992-
* GlobalSecondaryIndexUpdates?: array<GlobalSecondaryIndexUpdate|array>,
993-
* StreamSpecification?: StreamSpecification|array,
994-
* SSESpecification?: SSESpecification|array,
995-
* ReplicaUpdates?: array<ReplicationGroupUpdate|array>,
996-
* TableClass?: TableClass::*,
997-
* DeletionProtectionEnabled?: bool,
990+
* BillingMode?: null|BillingMode::*,
991+
* ProvisionedThroughput?: null|ProvisionedThroughput|array,
992+
* GlobalSecondaryIndexUpdates?: null|array<GlobalSecondaryIndexUpdate|array>,
993+
* StreamSpecification?: null|StreamSpecification|array,
994+
* SSESpecification?: null|SSESpecification|array,
995+
* ReplicaUpdates?: null|array<ReplicationGroupUpdate|array>,
996+
* TableClass?: null|TableClass::*,
997+
* DeletionProtectionEnabled?: null|bool,
998998
* '@region'?: string|null,
999999
* }|UpdateTableInput $input
10001000
*

src/Input/BatchGetItemInput.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ final class BatchGetItemInput extends Input
8282
/**
8383
* @param array{
8484
* RequestItems?: array<string, KeysAndAttributes|array>,
85-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
85+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
8686
* '@region'?: string|null,
8787
* } $input
8888
*/
@@ -101,7 +101,7 @@ public function __construct(array $input = [])
101101
/**
102102
* @param array{
103103
* RequestItems?: array<string, KeysAndAttributes|array>,
104-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
104+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
105105
* '@region'?: string|null,
106106
* }|BatchGetItemInput $input
107107
*/

src/Input/BatchWriteItemInput.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ final class BatchWriteItemInput extends Input
6161
/**
6262
* @param array{
6363
* RequestItems?: array<string, array>,
64-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
65-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
64+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
65+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
6666
* '@region'?: string|null,
6767
* } $input
6868
*/
@@ -82,8 +82,8 @@ public function __construct(array $input = [])
8282
/**
8383
* @param array{
8484
* RequestItems?: array<string, array>,
85-
* ReturnConsumedCapacity?: ReturnConsumedCapacity::*,
86-
* ReturnItemCollectionMetrics?: ReturnItemCollectionMetrics::*,
85+
* ReturnConsumedCapacity?: null|ReturnConsumedCapacity::*,
86+
* ReturnItemCollectionMetrics?: null|ReturnItemCollectionMetrics::*,
8787
* '@region'?: string|null,
8888
* }|BatchWriteItemInput $input
8989
*/

src/Input/CreateTableInput.php

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -223,15 +223,15 @@ final class CreateTableInput extends Input
223223
* AttributeDefinitions?: array<AttributeDefinition|array>,
224224
* TableName?: string,
225225
* KeySchema?: array<KeySchemaElement|array>,
226-
* LocalSecondaryIndexes?: array<LocalSecondaryIndex|array>,
227-
* GlobalSecondaryIndexes?: array<GlobalSecondaryIndex|array>,
228-
* BillingMode?: BillingMode::*,
229-
* ProvisionedThroughput?: ProvisionedThroughput|array,
230-
* StreamSpecification?: StreamSpecification|array,
231-
* SSESpecification?: SSESpecification|array,
232-
* Tags?: array<Tag|array>,
233-
* TableClass?: TableClass::*,
234-
* DeletionProtectionEnabled?: bool,
226+
* LocalSecondaryIndexes?: null|array<LocalSecondaryIndex|array>,
227+
* GlobalSecondaryIndexes?: null|array<GlobalSecondaryIndex|array>,
228+
* BillingMode?: null|BillingMode::*,
229+
* ProvisionedThroughput?: null|ProvisionedThroughput|array,
230+
* StreamSpecification?: null|StreamSpecification|array,
231+
* SSESpecification?: null|SSESpecification|array,
232+
* Tags?: null|array<Tag|array>,
233+
* TableClass?: null|TableClass::*,
234+
* DeletionProtectionEnabled?: null|bool,
235235
* '@region'?: string|null,
236236
* } $input
237237
*/
@@ -257,15 +257,15 @@ public function __construct(array $input = [])
257257
* AttributeDefinitions?: array<AttributeDefinition|array>,
258258
* TableName?: string,
259259
* KeySchema?: array<KeySchemaElement|array>,
260-
* LocalSecondaryIndexes?: array<LocalSecondaryIndex|array>,
261-
* GlobalSecondaryIndexes?: array<GlobalSecondaryIndex|array>,
262-
* BillingMode?: BillingMode::*,
263-
* ProvisionedThroughput?: ProvisionedThroughput|array,
264-
* StreamSpecification?: StreamSpecification|array,
265-
* SSESpecification?: SSESpecification|array,
266-
* Tags?: array<Tag|array>,
267-
* TableClass?: TableClass::*,
268-
* DeletionProtectionEnabled?: bool,
260+
* LocalSecondaryIndexes?: null|array<LocalSecondaryIndex|array>,
261+
* GlobalSecondaryIndexes?: null|array<GlobalSecondaryIndex|array>,
262+
* BillingMode?: null|BillingMode::*,
263+
* ProvisionedThroughput?: null|ProvisionedThroughput|array,
264+
* StreamSpecification?: null|StreamSpecification|array,
265+
* SSESpecification?: null|SSESpecification|array,
266+
* Tags?: null|array<Tag|array>,
267+
* TableClass?: null|TableClass::*,
268+
* DeletionProtectionEnabled?: null|bool,
269269
* '@region'?: string|null,
270270
* }|CreateTableInput $input
271271
*/

0 commit comments

Comments
 (0)