Skip to content

Conversation

@Chris53897
Copy link

@Chris53897 Chris53897 commented Nov 4, 2025

  • Remove MapzenFactory
  • Remove GeoIPsFactory

TODO:

  • Fix failing (skipped) tests
  • Fix PHPUnit deregsiter of errorLogger
  • Revert and Fix deprecations
convertErrorsToExceptions="false"
convertNoticesToExceptions="false"
convertWarningsToExceptions="false"
  • Remove "doctrine/annotations": "^1.11.1 || ^2.0", ?
  • Add support for "doctrine/doctrine-bundle": "^2.18 || ^3.0",
  • ReAdd different configs for Symfony versions

Summary by CodeRabbit

  • Chores

    • Minimum PHP version updated to 8.1; dropped support for PHP < 8.1
    • Symfony updated to versions 6.4 and 7.0+
    • Updated geocoder plugins and provider packages to latest versions
    • Removed MapzenFactory and GeoIPsFactory support
    • Modernized CI workflows with upgraded action versions
  • Tests

    • Simplified test configurations by removing version-specific code paths

✏️ Tip: You can customize this high-level summary in your review settings.

@norkunas
Copy link
Member

norkunas commented Nov 4, 2025

Should we align with Symfony 6.4 php >=8.1 requirement?

@Chris53897
Copy link
Author

I can do if you want. EOL is in 2 months https://www.php.net/supported-versions.php

@norkunas
Copy link
Member

norkunas commented Nov 4, 2025

Well Symfony 6.4 won't drop support for 8.1, so i think it's better, unless 8.2 has something you really want to use :)

@Chris53897
Copy link
Author

I changed it to PHP 8.1
Can you please decide if you want to have me to

  • Remove "doctrine/annotations": "^1.11.1 || ^2.0", ?
  • Add support for "doctrine/doctrine-bundle": "^2.18 || ^3.0",

@norkunas
Copy link
Member

norkunas commented Nov 5, 2025

Well yeah, doctrine bundle v3 support could be nice, but then we should add lowest/higest deps to the matrix

@Chris53897 Chris53897 changed the title feat: drop support for PHP < 8.2, symfony < 6.4 (WIP) feat: drop support for PHP < 8.1, symfony < 6.4 (WIP) Nov 5, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 8, 2025

Walkthrough

The PR upgrades the bundle to PHP 8.1+ and Symfony 6.4/7.x support while removing compatibility with older versions. Version-specific test configurations are consolidated, trait-based helpers are simplified, CI workflows are updated with newer PHP versions and actions, and deprecated providers are removed.

Changes

Cohort / File(s) Summary
CI & Workflow Updates
.github/workflows/ci.yml
Bumped PHP version to 8.5, upgraded checkout action to v6, updated compatibility matrix from PHP [7.4, 8.0–8.4] to [8.1–8.5] and Symfony from [5.4., 6.4., 7.2., 7.3.] to [6.4., 7.4.]; adjusted exclusions accordingly
Dependency & Release Updates
composer.json, CHANGELOG.md
Updated PHP requirement to ^8.1, upgraded Symfony components to ^6.4 || ^7.0, bumped geocoder providers and related packages (php-http/discovery, willdurand/geocoder, doctrine/doctrine-bundle, etc.); added version 6.0 changelog with PHP 8 features and removal of PHP < 8.1 support
Test Configuration Consolidation
tests/Functional/config/framework.yml, tests/Functional/config/listener.yml
Merged framework_sf6.yml settings (annotations, handle_all_throwables, php_errors.log) into framework.yml; consolidated listener_php7/8.yml into listener.yml with AttributeDriver and unified Doctrine ORM config
Removed Version-Specific Configs
tests/Functional/config/framework_sf6.yml, tests/Functional/config/listener_php7.yml, tests/Functional/config/listener_php8.yml
Deleted conditional Symfony 6+ and PHP version-specific configuration files; settings merged into base configs
Test Helper Consolidation
tests/Functional/Helper/CacheHelper.php
Replaced trait-based version switching with unified implementation; added 8 concrete cache methods (get, set, delete, clear, getMultiple, setMultiple, deleteMultiple, has) with default return values
Removed Helper Traits
tests/Functional/Helper/CacheHelperV7.php, tests/Functional/Helper/CacheHelperV8.php
Deleted PHP version-specific cache helper traits (CacheHelperV7, CacheHelperV8); functionality consolidated into CacheHelper
Test File Simplifications
tests/Functional/BundleInitializationTest.php, tests/Functional/GeocoderListenerTest.php, tests/Functional/PluginInteractionTest.php, tests/Functional/ProviderFactoryTest.php
Removed conditional loading of framework_sf6.yml and listener_php*.yml; removed Geoip provider from test fixtures; marked one cache plugin test as skipped
Bootstrap & Config Updates
tests/bootstrap.php, phpunit.xml.dist, tests/Command/GeocodeCommandTest.php
Added commented error handler reference; changed PHPUnit flags (convertErrorsToExceptions, convertNoticesToExceptions, convertWarningsToExceptions) from true to false; added addCommand fallback in GeocodeCommandTest
Bundle Cleanup
src/BazingaGeocoderBundle.php
Removed @return void PHPDoc annotation from build() method

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Areas requiring attention:

  • Configuration consolidation correctness: Verify that merging framework_sf6.yml and listener_php*.yml into base configs preserves all necessary settings for both Symfony 6 and 7
  • CacheHelper trait consolidation: Ensure the unified CacheHelper implementation with inline methods covers all test scenarios previously handled by version-specific traits
  • Removed Geoip provider: Confirm removal from test provider list aligns with the deprecated provider cleanup mentioned in CHANGELOG
  • PHPUnit flag changes: Verify that disabling error/notice/warning exceptions doesn't mask test failures or break existing test expectations

Possibly related PRs

  • #369: Both PRs remove deprecated provider factories (MapzenFactory and GeoIPsFactory) and corresponding test/config entries for this major version release

Poem

🐇 Hops through the code with glee,
PHP Eight-One and Seven we see,
Old traits retired, configs aligned,
Version checks left far behind,
Cleaner bundles, modern and bright!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.56% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: dropping support for PHP < 8.1 and Symfony < 6.4, which aligns with the dependency updates, configuration simplifications, and test changes throughout the changeset.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
tests/Functional/PluginInteractionTest.php (1)

45-46: Unconditional skip hides a real regression in plugin/cache interaction

markTestSkipped() at the top means this test will never execute its assertions, so any regressions in the cache + FakeIp + geoPlugin interaction will go unnoticed. The TODO shows this is temporary, but before merging a “drop old versions” PR into master, it would be better to either:

  • Fix the underlying “serialization of closure” issue, or
  • Make the skip clearly traceable (e.g. link to an issue / add @group / short explanation of when this fails), or
  • Gate the skip on a known condition (PHP / Symfony / library version) instead of skipping unconditionally.

If you share the exact stack trace for the serialization error, I can help sketch a concrete fix that avoids needing to skip the test.

CHANGELOG.md (1)

5-15: Changelog 6.0 entry should also mention dropped Symfony versions

You document the PHP baseline change and factory removals, but the PR also drops Symfony < 6.4 support. Consider adding a “Removed: Symfony < 6.4 support” bullet under Version 6.0 so consumers see the full BC surface.

tests/Functional/config/framework.yml (1)

11-14: Verify framework annotations/error-handling choices for functional tests

These additions change global framework behavior:

  • annotations: false disables FrameworkBundle’s annotation support; double‑check that your functional tests (routing, validation, etc.) don’t depend on annotations anywhere.
  • handle_all_throwables: true and php_errors.log: true affect how exceptions and PHP errors are reported and logged in tests.

Given the concurrent PHPUnit config changes and the commented-out ErrorHandler::register() in tests/bootstrap.php, it’s worth confirming that this combination still surfaces the errors and deprecations you care about rather than silently logging them.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fe24ecb and d88dfd0.

📒 Files selected for processing (21)
  • .github/workflows/ci.yml (5 hunks)
  • CHANGELOG.md (1 hunks)
  • composer.json (1 hunks)
  • doc/services.md (0 hunks)
  • phpunit.xml.dist (2 hunks)
  • tests/Functional/BundleInitializationTest.php (0 hunks)
  • tests/Functional/CustomTestKernel.php (2 hunks)
  • tests/Functional/GeocoderListenerTest.php (0 hunks)
  • tests/Functional/Helper/CacheHelper.php (1 hunks)
  • tests/Functional/Helper/CacheHelperV7.php (0 hunks)
  • tests/Functional/Helper/CacheHelperV8.php (0 hunks)
  • tests/Functional/PluginInteractionTest.php (1 hunks)
  • tests/Functional/ProviderFactoryTest.php (0 hunks)
  • tests/Functional/config/framework.yml (1 hunks)
  • tests/Functional/config/framework_sf6.yml (0 hunks)
  • tests/Functional/config/listener.yml (1 hunks)
  • tests/Functional/config/listener_php7.yml (0 hunks)
  • tests/Functional/config/listener_php8.yml (0 hunks)
  • tests/Functional/config/provider/geoips.yml (0 hunks)
  • tests/Functional/config/provider/mapzen.yml (0 hunks)
  • tests/bootstrap.php (1 hunks)
💤 Files with no reviewable changes (11)
  • tests/Functional/config/framework_sf6.yml
  • tests/Functional/config/listener_php8.yml
  • doc/services.md
  • tests/Functional/Helper/CacheHelperV7.php
  • tests/Functional/GeocoderListenerTest.php
  • tests/Functional/config/provider/geoips.yml
  • tests/Functional/config/provider/mapzen.yml
  • tests/Functional/Helper/CacheHelperV8.php
  • tests/Functional/ProviderFactoryTest.php
  • tests/Functional/BundleInitializationTest.php
  • tests/Functional/config/listener_php7.yml
🧰 Additional context used
🪛 GitHub Actions: CI
tests/Functional/PluginInteractionTest.php

[warning] 45-45: Test skipped: TODO solve serialization of closure error

composer.json

[error] 1-1: Composer install failed due to PHP version mismatch: willdurand/geocoder requires PHP >= 8.2, but current PHP is 8.1.33. This blocks dependency resolution (geocoder-php/yandex-provider also requires willdurand/geocoder ^4.0|^5.0). Consider upgrading PHP or adjusting dependencies. Command: bin/composer_install.sh

🪛 PHPMD (2.15.0)
tests/Functional/Helper/CacheHelper.php

24-24: Avoid unused parameters such as '$key'. (undefined)

(UnusedFormalParameter)


24-24: Avoid unused parameters such as '$default'. (undefined)

(UnusedFormalParameter)


28-28: Avoid unused parameters such as '$key'. (undefined)

(UnusedFormalParameter)


28-28: Avoid unused parameters such as '$value'. (undefined)

(UnusedFormalParameter)


28-28: Avoid unused parameters such as '$ttl'. (undefined)

(UnusedFormalParameter)


33-33: Avoid unused parameters such as '$key'. (undefined)

(UnusedFormalParameter)


43-43: Avoid unused parameters such as '$keys'. (undefined)

(UnusedFormalParameter)


43-43: Avoid unused parameters such as '$default'. (undefined)

(UnusedFormalParameter)


48-48: Avoid unused parameters such as '$values'. (undefined)

(UnusedFormalParameter)


48-48: Avoid unused parameters such as '$ttl'. (undefined)

(UnusedFormalParameter)


53-53: Avoid unused parameters such as '$keys'. (undefined)

(UnusedFormalParameter)


58-58: Avoid unused parameters such as '$key'. (undefined)

(UnusedFormalParameter)

🔇 Additional comments (11)
tests/Functional/Helper/CacheHelper.php (2)

17-22: LGTM: Consolidation simplifies the codebase.

Replacing version-specific traits with a unified class is appropriate given the PHP 8.1+ requirement. This reduces complexity and eliminates the need to maintain separate implementations.


28-61: Static analysis warnings are expected for stub implementations.

PHPMD flags unused parameters throughout these methods. This is expected and acceptable for a test helper with no-op stub implementations. The methods appropriately return success values or empty results for cache operations that don't need to perform actual caching in tests.

tests/Functional/config/listener.yml (3)

16-22: Verify the attribute mapping configuration and fixture entities are properly migrated.

The mapping has been converted to use attribute-based configuration (line 19: type: attribute) to align with PHP 8 native attributes rather than doctrine/annotations. Ensure that all entity classes in tests/Functional/Fixtures/Entity have been updated to use PHP attributes instead of annotations. Check that entity files use #[ORM\...] syntax and no longer contain legacy @ORM\... docblock annotations.


28-33: The root_url and user_agent options are supported by NominatimFactory.

Both root_url and user_agent are documented configuration options for the Nominatim provider. The user_agent parameter is required by Nominatim's usage policy, and root_url defaults to https://nominatim.openstreetmap.org. The configuration in this file correctly uses these options.


40-46: Verify GeocoderListener service definition arguments and event listener tag.

The doctrine.event_listener tag with onFlush event is a valid Symfony/Doctrine configuration pattern. Service references using fully-qualified class names (FQCN) like @Bazinga\GeocoderBundle\Mapping\Driver\AttributeDriver are standard Symfony autowiring syntax and will be correctly resolved.

However, verify that Bazinga\GeocoderBundle\Doctrine\ORM\GeocoderListener constructor accepts exactly these two arguments in this order:

  1. The acme provider service
  2. The AttributeDriver service

Check the actual GeocoderListener class implementation to confirm the constructor signature matches the argument order shown in the service definition.

tests/Functional/CustomTestKernel.php (2)

64-77: kernel.runtime_mode.web parameter addition looks appropriate

Exposing kernel.runtime_mode.web as true in the kernel parameters aligns with the newer Symfony runtime expectations and should help tests behave like a web runtime without affecting older Symfony versions.


33-38: Confirm reboot() signature compatibility with TestKernel

Adding the : void return type is good, but this override still takes a nullable $warmupDir without a default. If the parent TestKernel::reboot() has $warmupDir = null, calling $kernel->reboot() with no argument on a CustomTestKernel instance would be a signature mismatch at runtime. Verify the parent signature and either mirror its default or ensure you never call reboot() without an explicit argument.

phpunit.xml.dist (1)

8-10: Disabling PHPUnit error/notice/warning to exception conversion weakens test signal

With convertErrorsToExceptions, convertNoticesToExceptions, and convertWarningsToExceptions all set to false, PHP issues may no longer fail tests—especially since ErrorHandler::register() is currently commented out in tests/bootstrap.php. Before merging, please either restore these to true or have a clear alternative error-handling path so failures don't slip through unnoticed.

tests/bootstrap.php (1)

5-8: Commented-out ErrorHandler::register() leaves tests without robust error handling

The use ErrorHandler and ErrorHandler::register(null, false); lines are currently commented out, so Symfony's ErrorHandler is never registered during tests. Combined with the disabled convert*ToExceptions flags in phpunit.xml, this risks turning many PHP errors/notices/warnings into mere log entries instead of test failures.

Once you've resolved the PHPUnit / errorLogger / deprecation handling issues, please either:

  • Re‑enable ErrorHandler::register() (and potentially restore the default PHPUnit conversion flags), or
  • Document and implement a different, explicit strategy for surfacing PHP issues in tests.
.github/workflows/ci.yml (1)

65-70: Align PHPUnit PHP matrix with composer/geocoder constraints and consider lowest/highest runs

The PHPUnit matrix still runs on PHP 8.1, but with willdurand/geocoder constrained to ^5.0 the dependency resolution on 8.1 currently fails (as seen in the pipeline). Once you decide whether to keep 8.1 support or move to 8.2+ in composer.json, please update this matrix accordingly so that all matrix entries are actually installable.

Also, given the discussion about doctrine/doctrine-bundle v2 vs v3 and the many upgraded provider packages, it may be worth adding dedicated "lowest" and "highest" dependency runs (e.g., using ramsey/composer-install's dependency-versions input) so that both extremes are covered in CI.

composer.json (1)

17-25: Fix PHP 8.1 vs willdurand/geocoder >= 8.2 conflict and tidy composer metadata

The current constraints are inconsistent with each other and with the CI matrix:

  • php is declared as ^8.1, and CI runs PHPUnit on PHP 8.1.
  • willdurand/geocoder is constrained to ^5.0, but the version pulled in requires PHP >= 8.2, which is exactly what the pipeline failure reports.
  • Result: the PHP 8.1 job cannot resolve dependencies.

Before merging, you'll need to choose one of these directions:

  1. Keep PHP 8.1 support

    • Pin willdurand/geocoder to the latest release that still supports PHP 8.1 (or keep the ^4.x range if needed), and ensure all geocoder-* provider versions remain compatible.
  2. Drop PHP 8.1 and require 8.2+

    • Bump "php" to ^8.2 (and adjust CI and CHANGELOG wording accordingly).
    • Remove PHP 8.1 from the test matrix.

Additional small cleanups while you're here:

  • symfony/options-resolver currently has a leading space in the constraint: " ^6.4 || ^7.0". Consider normalizing it to "^6.4 || ^7.0" for consistency.
  • doctrine/doctrine-bundle is fixed at "^2.18". Given the PR discussion about supporting v3, you may want to widen this to "^2.18 || ^3.0" and cover both in CI.
  • The branch alias still reads "dev-master": "5.0-dev" even though you're introducing a 6.0 changelog entry; consider bumping this to "6.0-dev" when you're ready to tag v6.

Comment on lines +24 to +26
public function get(string $key, mixed $default = null): mixed
{
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Return the default parameter instead of implicit null.

The get() method has an empty body, which implicitly returns null. Per the PSR-16 CacheInterface contract, it should return the $default parameter when the key is not found. Tests that pass custom default values may receive null instead of their expected default.

Apply this diff:

 public function get(string $key, mixed $default = null): mixed
 {
+    return $default;
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public function get(string $key, mixed $default = null): mixed
{
}
public function get(string $key, mixed $default = null): mixed
{
return $default;
}
🧰 Tools
🪛 PHPMD (2.15.0)

24-24: Avoid unused parameters such as '$key'. (undefined)

(UnusedFormalParameter)


24-24: Avoid unused parameters such as '$default'. (undefined)

(UnusedFormalParameter)

🤖 Prompt for AI Agents
In tests/Functional/Helper/CacheHelper.php around lines 24 to 26, the get(string
$key, mixed $default = null): mixed method is empty and therefore returns null;
implement it to follow PSR-16 by returning the provided $default when the key is
not found. Update the method to look up the key in the underlying store (or
check whatever internal array/registry this helper uses) and return the stored
value if present, otherwise return $default, preserving the method signature and
not throwing for missing keys.

@norkunas
Copy link
Member

@Chris53897 i think it's better to do smaller PR's. I've started with removing deprecated provider factories.

@Chris53897
Copy link
Author

I agree.
With all the new deprecations from Symfony 7.4 and DoctrineBundle 3 it is getting more complex.

@norkunas
Copy link
Member

Seems it's not so easy to go small either 😅

@norkunas
Copy link
Member

@Chris53897 ok it's ready now to make small prs

@Chris53897
Copy link
Author

So i should make new PRs from main-Branch? Or work on this PR?


// use Symfony\Component\ErrorHandler\ErrorHandler;

// ErrorHandler::register(null, false);
Copy link
Member

Choose a reason for hiding this comment

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

is this needed?

Copy link
Author

Choose a reason for hiding this comment

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

I am not sure. Higher PHPUnit Versions than 9 often complains about "tests are not removing there own error handler"

Copy link
Member

Choose a reason for hiding this comment

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

ah yes, but i think thats applicable only to phpunit v10

report_fields_where_declared: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: false
dbal:
Copy link
Member

Choose a reason for hiding this comment

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

maybe restore indentation for less diff?

env:
php-version: 8.4
php-version: 8.5
PHP_CS_FIXER_IGNORE_ENV: 1
Copy link
Member

Choose a reason for hiding this comment

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

this env var is deprecated, can you add ->setUnsupportedPhpVersionAllowed(true) to php-cs-fixer.dist.php ?

Copy link
Member

Choose a reason for hiding this comment

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

but can be done in a follow-up pr

@norkunas
Copy link
Member

So i should make new PRs from main-Branch? Or work on this PR?

do how it's easier for you

@Chris53897
Copy link
Author

ok. i will try to find some time tomorrow or on the weekend to work on this.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
composer.json (1)

27-29: Clarify whether doctrine/doctrine-bundle v3 support is intended for this PR.

doctrine/doctrine-bundle v3.0+ requires Symfony ^6.4 || ^7.0 || ^8.0 and PHP ^8.4, which aligns with your project targets. However, the current constraint pins to ^2.18 only (line 28). If v3 support is intended, update the constraint to ^2.18 || ^3.0. Additionally, note that bundle v3 strictly requires doctrine/orm ^3.0, so if bundle v3 is added, verify the orm constraint ^2.8 || ^3.0 doesn't create a conflict for bundle v3 deployments.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e3b137d and b1602e3.

📒 Files selected for processing (3)
  • composer.json (1 hunks)
  • tests/Functional/BundleInitializationTest.php (0 hunks)
  • tests/Functional/ProviderFactoryTest.php (0 hunks)
💤 Files with no reviewable changes (2)
  • tests/Functional/BundleInitializationTest.php
  • tests/Functional/ProviderFactoryTest.php
🔇 Additional comments (1)
composer.json (1)

18-23: The php-http/discovery plugin being disabled is intentional and correct.

The code uses runtime discovery via Psr18ClientDiscovery::find() (not plugin-based discovery), which works regardless of the allow-plugins setting. Every factory supports an optional http_client configuration parameter; if not provided, runtime discovery automatically detects any installed PSR-18 compatible client. No change needed.

Comment on lines +21 to +24
"symfony/console": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/options-resolver": " ^6.4 || ^7.0",
"willdurand/geocoder": "^4.6.0 || ^5.0"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Fix the invalid/odd constraint formatting on symfony/options-resolver.
Line 23 has a leading space (" ^6.4 || ^7.0"), which is easy to miss and can cause constraint parsing/lockfile churn—normalize it to match the other Symfony constraints.

-    "symfony/options-resolver": " ^6.4 || ^7.0",
+    "symfony/options-resolver": "^6.4 || ^7.0",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"symfony/console": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/options-resolver": " ^6.4 || ^7.0",
"willdurand/geocoder": "^4.6.0 || ^5.0"
"symfony/console": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/options-resolver": "^6.4 || ^7.0",
"willdurand/geocoder": "^4.6.0 || ^5.0"
🤖 Prompt for AI Agents
In composer.json around lines 21 to 24, the version constraint for
"symfony/options-resolver" has a leading space (" ^6.4 || ^7.0") which is
inconsistent with the other Symfony dependencies and can break constraint
parsing; remove the leading space so the constraint reads like the others (e.g.
"^6.4 || ^7.0") to normalize formatting and prevent lockfile churn.

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.

3 participants