Skip to content

2.19.2

Choose a tag to compare

@koriym koriym released this 19 Nov 11:13
· 157 commits to 2.x since this release
2e5aceb

What's Changed

Backward Compatibility Enhancement

This release adds backward compatibility for method-level InjectInterface+Qualifier attributes on single-parameter setter methods, and improves naming consistency for deprecated code.

New: BcParameterQualifier

  • Automatically applies method-level InjectInterface+Qualifier attributes to parameters for single-parameter setters
  • Restores backward compatibility for code using combined attributes like #[FakeLogDbInject]
  • Only applies when attribute supports Attribute::TARGET_PARAMETER (distinguishes from Provider pattern)
  • Located in src-deprecated/di/ and marked as @deprecated

Example (now works):

#[FakeLogDbInject]  // InjectInterface + Qualifier
public function setDb(ExtendedPdoInterface $pdo) { }

Recommended Modern Approach:

#[Inject]
public function setDb(#[FakeLogDb] ExtendedPdoInterface $pdo) { }

Naming Improvements:

  • Renamed: LegacyStringParserBcStringParser for consistency
  • All backward compatibility code now uses Bc prefix (Backward Compatibility)
  • Clearer, more concise naming throughout deprecated code

Technical Details:

  • New class: Ray\Di\BcParameterQualifier with getNames() method
  • Renamed: Ray\Di\LegacyStringParserRay\Di\BcStringParser
  • Comprehensive test coverage for both BC features
  • Ray.Compiler compatible (inference happens at compile-time)

This ensures compatibility with packages like Ray.AuraSqlModule that use method-level qualifier attributes.

Full Changelog: 2.19.1...2.19.2