By Michael Babker on 2015-08-22 15:00 in Framework Team

This serves as a generalized update on the progress of Framework version 2.

PHP Support

All Framework v2 packages no longer allow unit test failures on PHP 7.  Our packages have tested stable throughout the alpha and beta releases and as such all future contributions will not allow test failures to be introduced for PHP 7.

For minimum supported PHP versions, the Session package has dropped support for PHP 5.3.  There are open pull requests which affect the minimum supported version for other packages at this time, otherwise no other changes to the minimum supported versions have been made.

Refactored Packages

The Language, Router, Session, and View packages have undergone large refactorings for improved APIs and use.  The Crypt and Form packages were refactored for PSR-4 compliance which involved renaming most of the classes in the packages.  Presently, there are open pull requests for the Dependency Injection and Event packages for larger restructuring changes with additional changes for the Event package forthcoming from the Joomla 4 Architecture group.  An initial pass on the Cache package has been started to catch it up to the present PSR-6 draft.  Likewise, an initial pass on the URI package for PSR-7 compliance has been started.

As part of GSoC 2014, a DateTime package was added to the Framework and a Renderer package was introduced as part of the refactoring of the View package.


An effort to write documentation for all of the Framework's packages and structure it in a consistent manner has begun in several packages.  The docs folder in the Session package demonstrates the current working structure for this documentation.  A later plan is to consolidate all code documentation into the Framework website with the version 2 launch.

Code Cleanup

Code that is deprecated in the 1.x branch has been removed in the current 2.0 branches.

A review has been conducted on many of the packages to improve internal code structures and interoperability.  For many packages which were dependent on a Joomla\Registry\Registry object for data storage or configuration, the dependency has been loosened to require either a simple array or an object implementing the ArrayAccess interface (such as the Registry class).  Additional passes over the package code will be conducted while development progresses.

Many packages have been integrated with Scrutinizer-CI for additional code analysis tools.  This integration will be used to assist in reviewing the Framework code and making improvements as practical.

Additional Work

Work continues on reviewing our package structures and identifying places for cleanup and refactoring.  Potential changes include restructuring the Filesystem package as an extension of Flysystem and refactoring of support classes in the Database package.  Additional changes and ideas may be discussed on the Framework mailing list, GitHub repositories, or the #framework channel in the Joomla Glip chat.