Skip to content

Commit

Permalink
feat(php): allow empty object constructors if no required properties (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
dcb6 committed Sep 26, 2024
1 parent db3f99b commit c836480
Show file tree
Hide file tree
Showing 75 changed files with 85 additions and 74 deletions.
8 changes: 7 additions & 1 deletion generators/php/codegen/src/ast/DataClass.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { AstNode } from "./core/AstNode";
import { Class } from "./Class";
import { Writer } from "./core/Writer";
import { CodeBlock } from "./CodeBlock";
import { Parameter } from "./Parameter";
import { Field } from "./Field";
import { Method } from "./Method";
Expand Down Expand Up @@ -61,6 +62,10 @@ export class DataClass extends AstNode {
this.class_.write(writer);
}

private allFieldsAreOptional(): boolean {
return this.class_.fields.every((field) => field.type.isOptional());
}

private getConstructorParameters({ orderedFields }: { orderedFields: Field[] }): Parameter[] {
return [
new Parameter({
Expand All @@ -74,7 +79,8 @@ export class DataClass extends AstNode {
{
multiline: true
}
)
),
initializer: this.allFieldsAreOptional() ? new CodeBlock("[]") : undefined
})
];
}
Expand Down
5 changes: 5 additions & 0 deletions generators/php/sdk/versions.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
- version: 0.1.3
changelogEntry:
- type: feat
summary: >-
We now allow an empty constructor on types with no required properties.
- version: 0.1.2
changelogEntry:
- type: feat
Expand Down
2 changes: 1 addition & 1 deletion seed/php-model/audiences/src/FolderA/Service/Response.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/audiences/src/FolderB/Common/Foo.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/circular-references/src/ImportingA.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/examples/src/Types/Tree.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/FetchResponse.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/ListElement.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/ListResponse.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/Pagination.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/QueryResponse.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/QueryResult.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto-exhaustive/src/Usage.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/grpc-proto/src/CreateResponse.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/objects-with-imports/src/Tree.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/pagination/src/Users/WithCursor.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/pagination/src/Users/WithPage.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/trace/src/V2/Problem/TestCaseExpects.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-model/trace/src/V2/V3/Problem/TestCaseExpects.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-sdk/audiences/src/FolderB/Common/Types/Foo.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-sdk/audiences/src/Foo/Requests/FindRequest.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-sdk/circular-references/src/Types/ImportingA.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion seed/php-sdk/examples/src/Types/Types/Tree.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c836480

Please sign in to comment.