Skip to content

Raise platform requirements for 4.0 - #125

Open
RandyCupic wants to merge 6 commits into
multiuploadfrom
platform
Open

RandyCupic wants to merge 6 commits into
multiuploadfrom
platform

Conversation

@RandyCupic

Copy link
Copy Markdown
Member

Raises the 4.0 platform requirements on top of the multi-upload branch (#124).

  • PHP ^8.3.
  • Symfony ^5.4 || ^7.4 || ^8.0. 6.x is dropped.
  • Doctrine ORM ^2.20 || ^3.6. doctrine-bundle ^2.7 || ^3.1.
  • Cloudinary PHP SDK ^3.3 (latest).
  • Removed symfony/proxy-manager-bridge. Nothing used it, and it has no Symfony 7 release.
  • Removed the ezpublish-legacy-dir composer extra.

The lower bound is PHP 8.3 + Symfony 5.4 because Akeneo 2026 pins php 8.3.* and Symfony 5.4. The lowest-deps job installs the same set Akeneo uses: ORM 2.20.0, DBAL 2.13, doctrine-bundle 2.7, Symfony 5.4.0. The plan is to raise the floor to PHP 8.4 + Symfony 7.4 in a later 4.x minor, once Akeneo supports it.

Akeneo note: Cloudinary SDK 3 requires psr/log ^2|^3, but Akeneo pins elasticsearch/elasticsearch 7.11.0, which requires psr/log ~1.0. To install 4.0, the Akeneo project needs "elasticsearch/elasticsearch": "7.17.3 as 7.11.0" in its root composer.json. This was verified with a composer dry-run against the project lock file.

Code changes needed for the new platform:

  • Data transformers declare mixed parameter and return types, as required by Symfony 7+.
  • Required bundle config nodes no longer have a default value. Symfony 8 rejects that combination.
  • API usage no longer fails when Cloudinary does not return the rate limit reset header (rateLimitResetAt is int|false in SDK 3).
  • Test mocks were updated for Doctrine ORM 3 (EntityRepository), Cloudinary SDK 3 (ApiResponse return values) and Symfony 8 (Application::addCommand()).

CI:

  • Push builds run on master and on every X.Y branch.
  • Test matrix:
    • PHP 8.3 + Symfony 5.4 (normal and lowest deps)
    • PHP 8.4 + Symfony 7.4
    • PHP 8.5 + Symfony 8.1
  • Symfony 8.0 is end of life, and Composer refuses it because of an unfixed security advisory. The ^8.0 constraint still covers 8.1.
  • Static analysis runs on PHP 8.4 + Symfony 7.4.

Tested locally on PHP 8.4. Tests (641) pass on Symfony 5.4 (normal and lowest), 7.4 and 8.1. PHPStan and CS are clean.

Known gap: the array/object column types in the Doctrine mappings no longer exist in DBAL 4. An application on DBAL 4 will fail when it loads the mapping, even though the tests pass. This is handled separately by converting those columns to JSON.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant