2.19.2
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+Qualifierattributes 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:
LegacyStringParser→BcStringParserfor consistency - All backward compatibility code now uses
Bcprefix (Backward Compatibility) - Clearer, more concise naming throughout deprecated code
Technical Details:
- New class:
Ray\Di\BcParameterQualifierwithgetNames()method - Renamed:
Ray\Di\LegacyStringParser→Ray\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