-
-
Notifications
You must be signed in to change notification settings - Fork 106
Open
Labels
Milestone
Description
Phase 4 — Modernization Target #14 (Wheels 4.0)
Replace the zip-based, mixin-injection plugin system with a Service Provider model.
Current Problems
- Plugins are zip files extracted at boot
- Methods injected via
StructAppendinto variable scopes — collision risk - No namespacing — two plugins with same method name silently overwrite
- No lifecycle hooks for plugins
- Dead code referencing Railo-era workarounds
Proposed Design
component implements="wheels.ServiceProviderInterface" {
function register(container) {
container.map("auth").to("MyAuth.AuthService").asSingleton();
}
function boot(app) {
app.addMiddleware("MyAuth.AuthMiddleware");
app.modelTrait("authenticatable", "MyAuth.Authenticatable");
}
}Migration Path
- In 3.x, introduce
ServiceProviderinterface alongside existing plugin system - Plugins can optionally include
ServiceProvider.cfcfor new-style registration - In 4.0, deprecate mixin injection; require Service Providers
- Ship
wheels-legacy-plugin-adapterfor running old plugins in 4.0
Dependencies
Benefits from expanded DI container (#1912) and middleware pipeline (#1906).
See design_docs/MODERNIZE-WHEELS-RIM.md §4.10 for full implementation plan.
Reactions are currently unavailable