Skip to content

fix: bump PHP client to PHP 8.3+ and Guzzle 8 (old Guzzle has security advisories) - #12769

Merged
daniel-kmiecik merged 6 commits into
masterfrom
update-php
Oct 20, 2026
Merged

daniel-kmiecik merged 6 commits into
masterfrom
update-php

Conversation

@daniel-kmiecik

@daniel-kmiecik daniel-kmiecik commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh and ./bin/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: 3.0.0 branch for changes related to OpenAPI spec 3.0. Default: master.

Description of the PR

This pull request upgrades the PHP client code generation and test infrastructure to require PHP 8.3 and modernizes several dependencies and code patterns. The changes ensure compatibility with the latest PHP and related tooling, update documentation, and improve generated code quality and maintainability.

PHP Version and Dependency Upgrades

  • Updated all workflow files (.github/workflows/*.yml), composer manifests, and Travis CI configs to require and use PHP 8.3 instead of older versions. This includes raising the minimum required PHP version in composer.json and documentation.

  • Upgraded dependencies:

    • guzzlehttp/guzzle to ^8.3
    • squizlabs/php_codesniffer to ^3.0
    • phpunit/phpunit to ^8.5.52
    • friendsofphp/php-cs-fixer to ~2.12

Generated Code and Template Improvements

  • Updated generated code and templates to use nullable type hints (e.g., ?ClientInterface $client = null) for constructor parameters, improving type safety and PHP 8.3 compatibility.

  • Replaced deprecated or removed Guzzle functions (e.g., \GuzzleHttp\Psr7\try_fopen → \GuzzleHttp\Psr7\Utils::tryFopen, \GuzzleHttp\json_encode → json_encode(..., JSON_THROW_ON_ERROR)) throughout API templates and generated code for better error handling and compatibility.

Documentation Updates

  • Updated all documentation and README files to reflect the new PHP 8.3 minimum requirement and updated testing requirements.

Tooling and Configuration Modernization

  • Updated .php_cs config to the new PhpCsFixer\Config format and modern rules, replacing the deprecated Symfony CS config.

  • Enhanced the git_push.sh script to support a customizable Git repository base URL, improving automation flexibility.

Version Bumps

  • Updated version references from 2.4.0-SNAPSHOT to 2.4.53-SNAPSHOT in generated files and version tracking.

daniel-kmiecik and others added 2 commits October 19, 2026 15:10
Generated composer.json depended on guzzlehttp/guzzle ^6.2 and
squizlabs/php_codesniffer ~2.6. Both are EOL and every release in range is
blocked by Composer security advisories, which fails the PHP build.

Note for users regenerating a PHP client: the generated code now requires
PHP >=8.3, guzzlehttp/guzzle ^8.3 and phpcs ^3.0 (php-symfony: phpcs ^3.0
only). The codegen CLI and its options are unchanged.

api.mustache:
- Psr7\try_fopen -> Psr7\Utils::tryFopen
- \GuzzleHttp\json_encode -> native json_encode(..., JSON_THROW_ON_ERROR)
  (Guzzle 8 removed it; a failure now throws \JsonException)
- implicit nullable constructor params -> ?Type
README/.travis.yml: PHP 8.3.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- regenerate samples/client/petstore/php, petstore-security-test/php and
  samples/server/petstore/php-symfony with the updated templates
- port hand-written sample tests to PHPUnit\Framework\TestCase, typed
  setUp()/setUpBeforeClass() and expectException(); make FakeHttpClient
  compatible with the Guzzle 8 ClientInterface
- run PHP workflows on PHP 8.3 (was 7.4)

Ints/Numbers models are intentionally not added: they do not compile on
PHP 8 (pre-existing generator issue, same on master).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@daniel-kmiecik daniel-kmiecik changed the title Update php fix: bump PHP client to PHP 8.3+ and Guzzle 8 (old Guzzle has security advisories) Oct 19, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Credential-routing risks and unresolved runtime, serialization, and tooling incompatibilities block approval.

5 open issues
What changed in this PR

Modernizes Swagger Codegen’s PHP clients and samples for PHP 8.3 and Guzzle 8, alongside test and tooling updates.

Changes:

  • Raises PHP requirements and updates dependencies and CI runtimes.
  • Modernizes generated APIs, model compatibility attributes, and PHPUnit tests.
  • Refreshes sample documentation, publishing scripts, and Swagger UI download paths.
File Description
samples/​server/​petstore/​php-symfony/​SymfonyBundle-php/​composer.json Updates PHP_CodeSniffer.
samples/​server/​petstore/​php-symfony/​.swagger-codegen/​VERSION Updates generation version.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​UserApiTest.php Modernizes PHPUnit setup.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​StoreApiTest.php Modernizes PHPUnit hooks.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​ResponseTypesTest.php Modernizes PHPUnit setup.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​RequestTest.php Modernizes PHPUnit setup.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​PetTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​PetApiTest.php Modernizes PHPUnit hooks and assertions.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​ParametersTest.php Modernizes PHPUnit setup.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​OuterEnumTest.php Updates exception expectations.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​OrderApiTest.php Modernizes PHPUnit hooks.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​ObjectSerializerTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​ModelInheritanceTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​HeadersTest.php Modernizes PHPUnit setup.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​HeaderSelectorTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​FormatTestTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​FakeHttpClient.php Adds interface-compatible type declarations.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​ExceptionTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​EnumTestTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​EnumClassTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​DebugTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​DateTimeSerializerTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​AuthTest.php Updates PHPUnit base class.
samples/​client/​petstore/​php/​SwaggerClient-php/​tests/​AsyncTest.php Modernizes setup and exception expectations.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​UserTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​TagTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​SpecialModelNameTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ReadOnlyFirstTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​PetTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OuterStringTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OuterNumberTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OuterEnumTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OuterCompositeTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OuterBooleanTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​OrderTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​NumberOnlyTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​NameTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ModelReturnTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ModelListTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​Model200ResponseTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​MixedPropertiesAndAdditionalPropertiesClassTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​MapTestTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​HasOnlyReadOnlyTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​FormatTestTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​EnumTestTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​EnumClassTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​EnumArraysTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​DogTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ClientTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ClassModelTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​CatTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​CategoryTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​CapitalizationTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​BooleanTest.php Adds Boolean test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ArrayTestTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ArrayOfNumberOnlyTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ArrayOfArrayOfNumberOnlyTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​ApiResponseTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​AnimalTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​AnimalFarmTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Model/​AdditionalPropertiesClassTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​UserApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​StoreApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​PetApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​FakeClassnameTags123ApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​FakeApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​test/​Api/​AnotherFakeApiTest.php Refreshes generated API test scaffolding.
samples/​client/​petstore/​php/​SwaggerClient-php/​README.md Updates requirements and sample documentation.
samples/​client/​petstore/​php/​SwaggerClient-php/​phpunit.xml.dist Corrects coverage directory separators.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​ObjectSerializer.php Refreshes generated header comments.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​User.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Tag.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​SpecialModelName.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ReadOnlyFirst.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Pet.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​OuterString.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​OuterNumber.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​OuterEnum.php Updates generator-version comment.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​OuterComposite.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​OuterBoolean.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Order.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​NumberOnly.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Name.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ModelReturn.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ModelList.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ModelInterface.php Refreshes generated header comments.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Model200Response.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​MixedPropertiesAndAdditionalPropertiesClass.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​MapTest.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​HasOnlyReadOnly.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​FormatTest.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​EnumTest.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​EnumClass.php Updates generator-version comment.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​EnumArrays.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Dog.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Client.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ClassModel.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Category.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Cat.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Capitalization.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Boolean.php Adds Boolean enum model.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ArrayTest.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ArrayOfNumberOnly.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ArrayOfArrayOfNumberOnly.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​ApiResponse.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​AnimalFarm.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​Animal.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Model/​AdditionalPropertiesClass.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​HeaderSelector.php Refreshes generated header comments.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Configuration.php Makes default port explicit.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​ApiException.php Refreshes generated header comments.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​UserApi.php Updates nullable parameters and JSON encoding.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​StoreApi.php Updates encoding, parameters, and path placeholders.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​PetApi.php Modernizes encoding and file opening.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​FakeClassnameTags123Api.php Updates nullable parameters and body encoding.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​FakeApi.php Updates body and query serialization.
samples/​client/​petstore/​php/​SwaggerClient-php/​lib/​Api/​AnotherFakeApi.php Updates nullable parameters and body encoding.
samples/​client/​petstore/​php/​SwaggerClient-php/​git_push.sh Adds configurable repository base URL.
samples/​client/​petstore/​php/​SwaggerClient-php/​docs/​Model/​Boolean.md Adds Boolean model documentation.
samples/​client/​petstore/​php/​SwaggerClient-php/​docs/​Api/​UserApi.md Documents explicit default port.
samples/​client/​petstore/​php/​SwaggerClient-php/​docs/​Api/​StoreApi.md Refreshes endpoint URLs and placeholders.
samples/​client/​petstore/​php/​SwaggerClient-php/​docs/​Api/​PetApi.md Documents explicit default port.
samples/​client/​petstore/​php/​SwaggerClient-php/​composer.json Raises PHP and dependency requirements.
samples/​client/​petstore/​php/​SwaggerClient-php/​.travis.yml Selects PHP 8.3.
samples/​client/​petstore/​php/​.swagger-codegen/​VERSION Updates generation version.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​test/​Model/​ModelReturnTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​test/​Api/​FakeApiTest.php Refreshes generated PHPUnit scaffolding.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​README.md Documents PHP 8.3 requirements.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​ObjectSerializer.php Adds stdClass handling and strict enum checks.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​Model/​ModelReturn.php Adds ArrayAccess compatibility attributes.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​Model/​ModelInterface.php Updates generator-version comment.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​HeaderSelector.php Refreshes version comment and whitespace.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​Configuration.php Updates generator-version comment.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​ApiException.php Updates generator-version comment.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​lib/​Api/​FakeApi.php Updates nullable parameters and body encoding.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​git_push.sh Adds configurable repository base URL.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​composer.json Raises PHP and dependency requirements.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​.travis.yml Selects PHP 8.3.
samples/​client/​petstore-security-test/​php/​SwaggerClient-php/​.php_cs Migrates fixer configuration API and rules.
samples/​client/​petstore-security-test/​php/​.swagger-codegen/​VERSION Updates generation version.
modules/​swagger-generator/​pom.xml Uses Swagger UI’s main archive.
modules/​swagger-codegen/​src/​main/​resources/​php/​README.mustache Documents PHP 8.3 requirements.
modules/​swagger-codegen/​src/​main/​resources/​php/​composer.mustache Raises generated dependency requirements.
modules/​swagger-codegen/​src/​main/​resources/​php/​api.mustache Modernizes generated parameters and Guzzle usage.
modules/​swagger-codegen/​src/​main/​resources/​php/​.travis.yml Generates PHP 8.3 CI configuration.
modules/​swagger-codegen/​src/​main/​resources/​php-symfony/​composer.mustache Updates generated PHP_CodeSniffer requirement.
.github/​workflows/​test-generation-v2.yml Runs with PHP 8.3.
.github/​workflows/​test-framework-v3-php.yml Runs with PHP 8.3.
.github/​workflows/​test-framework-v2-php.yml Runs with PHP 8.3.
.github/​workflows/​test-framework-php.yml Runs with PHP 8.3.

Review effort: Balanced

Comment thread samples/client/petstore/php/SwaggerClient-php/git_push.sh
Comment thread samples/client/petstore/php/SwaggerClient-php/lib/Model/Boolean.php
Comment thread modules/swagger-codegen/src/main/resources/php/composer.mustache
Comment thread modules/swagger-codegen/src/main/resources/php/composer.mustache
Comment thread samples/client/petstore/php/SwaggerClient-php/lib/Api/FakeApi.php
Guzzle 8 moved getResponse() from RequestException to ResponseException and
ConnectException no longer extends RequestException. The generated sync and
async handlers called getResponse() unconditionally, so connection errors
escaped as raw Guzzle exceptions or as an undefined-method Error.

Catch ResponseException (error responses) and TransferException (anything
without a response, e.g. connection errors) and wrap both in ApiException.
PHP-CS-Fixer 2.x does not run on PHP 8.3 and 3.x resolves to a fixer without
PHP 8.3 support when combined with PHPUnit 8.5 (sebastian/diff conflict).

- generated composer.json: phpunit ^9.6, php-cs-fixer ^3.0
- rename the generated fixer config .php_cs -> .php-cs-fixer.php (required by
  fixer 3), use the PHP 8.3 compatible (new Config()) form and allow the
  risky rules it already enabled
- PhpClientCodegen: supporting file name follows the rename
- regenerate PHP client samples
- sample tests: replace @ExpectedException* annotations and
  assertInternalType, both removed in PHPUnit 9

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daniel-kmiecik
daniel-kmiecik merged commit 3da5455 into master Oct 20, 2026
13 checks passed
@daniel-kmiecik
daniel-kmiecik deleted the update-php branch October 20, 2026 12:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants