News: Latest Additions and Pending Features
What's Pending
Developing version 5.0 that will be designed for the next PHP9 version. This will solve some design issues and add more features ot the framework:
- interface oriented design, to promote decoupling: even though extension almost always had a firm logical backing in the previous framework version
- Replacement of Attributes transport "bean" class with FACETS: instead of adding "attributes", developers will create independent injectable classes
- MVC middleware (controllers, view resolvers, event listeners) will use reflection-based constructor facets injection (the performance costs of using reflection have dropped significantly over years)
- VERY IMPORTANT: enforcement of boundaries, to discourage chaos building, because overly permissive design wrongly assumed developers' architectural competence. This will be done by:
- Adding interface based glue points and eliminating the use of "extends" operator as much as it is possible
- Restricting responsibilities in framework-bound classes (eg: controllers): they gain access only to minimal resources and they can have minimal side effects
- Creating a standalone API for code checking that can be bound to CI/CD process, which will include: detection of orphan or misused code
Progress:
What's New
What's New In Version 4.2
Code quality improvements by removing dependance on various classes with static functions. In order to avoid an attributes-based DependencyInjectionContainer, which would significantly degrade the performance for minimal gains, this class was used instead: Lucinda\Framework\ServiceRegistry
In addition of that, ViewLanguage HTML templating errors are now traceable by view/taglib, for quicker debugging.
What's New In Version 4.1
Code quality improvements suggested by matching apis code with popular code static analysis tools:
Recommendations were only followed if they provided a real positive improvement in code quality/readability (some, like adding
underscores at the beginning of private method names, are of very little value)!
What's New In Version 4.0
Purely aesthetic upgrade from version 3.3 (starts with same logic) mainly featuring:
- PHP 8.1+ compatible code
- actual enums wherever they were originally implemented as interfaces with constants
- usage of native Stringable class instead of developer defined one
- type hinting for ALL class fields, method parameters and return types thanks to:
Version 3.3 Available!
A new Console MVC API was created to handle console requests into responses + complete refactoring of Console API to feature a HTML-like templating engine for formatting console responses:
Version 3.3 Upgrade
Version 3.2 Available!
Classes referenced in XML for all APIs as well as classes in framework skeleton were required instead of being autoloaded. To enforce structural symmetry and ease of development, now ALL resources will be autoloaded regardless where they originate from:
Version 3.2 Upgrade
Version 3.1 Available!
MVC APIs in framework version 3.0 shared a significant amount of logic (namely everything about response rendering and the fundamentals behind application configuration). For that reason a new API had to be developed and framework needed to change too:
Version 3.1 Upgrade
What's New In Version 3.0
Framework has been upgraded to 3.0 version, featuring:
- PHP 7.1+ compatible code
- full PSR-4 compliance (incl. composer autoload)
- 100% unit test coverage for composing APIs
- development of new UnitTest API superior to PHPUnit in being simple, logical and super light weight
- making STDOUT MVC API event driven, using concepts similar to JavaScript
- development of new HTTP Headers API to encapsulate operations with HTTP headers according to RFC standards
- all composing APIs configure themselves by XML, instead of relying on Framework Engine API, in order to further reusability
- deprecation of HTTP Caching API in favor of a larger-scoped HTTP Headers API
- deprecation of Request Validation API in favor of a larger-scoped STDOUT MVC API
- code improvement, mostly in terms of achieving structural unity across all APIs
What's Planned
Following extra features are pending development: