-
-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Open
Open
Copy link
Labels
22Yii 2.2Yii 2.2dependenciesPull requests that update a dependency filePull requests that update a dependency filehelp wanted
Description
Problem
Currently, core application components such as log, view, formatter, i18n, urlManager, assetManager, and security are resolved via a legacy coreComponents array in framework/base/Application.php. This tightly couples the framework to specific implementations and limits interoperability with Yii3 and PSR-compliant components.
Proposal
- Refactor the resolution of these core components to use the Dependency Injection (DI) container as the primary mechanism.
- Where possible, define interfaces (preferably from the relevant PSRs) for these components.
- For components covered by PSRs, implement compatibility layers and/or adapters so Yii2 can work with PSR-compliant service contracts.
- During component resolution, attempt to retrieve the component from DI first. If not found, fall back to the existing
coreComponents(legacy) approach for backward compatibility. - This enables developers to override core components via DI and facilitates integration with Yii3 and external (e.g. PSR) components.
Benefits
- Moves Yii2 closer to Yii3's architecture and easier migration path.
- Enables use of Yii3 (and other PSR-compatible) components in Yii2 apps.
- Reduces coupling and increases developer flexibility.
Example Migration Path
- Identify all core components in
coreComponents(). - For each, check for suitable PSR interface (e.g., PSR-3 for logging, PSR-16 for caching, PSR-7 for HTTP, etc). Create interfaces if none exist.
- Refactor component resolution logic to:
- Query the DI container first.
- If not found, fall back to
coreComponentsarray as currently implemented.
- Add documentation and migration notes for developers.
samdark
Metadata
Metadata
Assignees
Labels
22Yii 2.2Yii 2.2dependenciesPull requests that update a dependency filePull requests that update a dependency filehelp wanted