Version 4 Plan - Features and Enhancements Roadmap
Version 4 Plan - Features and Enhancements Roadmap
This is to document the enhancements, features and other changes to bring to LmcUser in a forthcoming version 4.
Rationale
LmcUser is a port of ZF-Commons/ZfcUser to Laminas. ZfcUser was developed several years ago and was based on Zend Framework v2 and v3. The port of ZfcUser to Laminas did not bring significant improvements or new features to the package. New frameworks based on Laminas MVC, such as Laminas API Tools have, come along and the Laminas Components have also evolved. It is long overdue to give it a serious upgrade.
LmcRbacMvc has been installed more than 25K times according to Packagist which is a good indication that the package has its usefulness in web application. We are looking for users of the package to provide inputs into the development roadmap for Version 4.
Process
- Comment on this issue if you want to add an enhancement or a feature to be included in Version 4.
- Issues will be created for enhancements/features selected for inclusion in V4 and will be added to the development Backlog and will be labeled as
v4 - Development toward V4 will be done on the
4.xbranch. - A GitHub project for LmcUser was created and issues to be added to the project so that progress can be managed
- Issues will be assigned to contributors
Selected Enhancements
- Use another provide for CI (#46)
- Add type declarations for parameters and return values (#48)
- Additional testing for MVC components (#56)
- #82
- #81
- #80
- #75
- #97
Proposed enhancements
Adding #46 to the list of enhancements
Adding #48 to the list of enhancements
Adding #56 to list of enhancements
A few suggestions.
General suggestions:
- Remove the Service Locator usage. Service Manager should not be injected into services
- Move listeners to ListenerAggregates to get them out of bootstrapping.
- Remove EventManager\EventProvider as EventManagerAwareInterface / EventManagerAwareTrait makes this redundant as far as I can tell.
- Refactor *Options classes to extend Stdlib\ArrayObject and pass ArrayObject::Array_As_Props flag.
Forms:
- Move logic to the forms init methods and out of the Form classes constructors.
- Register Forms via the FormElementManager. The FormElementManager is a plugin manager designed specifically for forms and form elements. It has the Initializable initializer running against all instances (iirc) and verifies that the instances are compatible.
- Move most current logic to fieldsets so its reusable and entities can be bound to them to simplify controller logic.
- Provide a PasswordFilter for hashing the password.
- Use the provided Laminas Authentication provided Validator for logging the user in upon form validation (if possible not sure if your workflow will lend itself to that.)
More to come.
Thanks @tyrsson I will create new issues accordingly