Potential backward compatibility issues in Joomla 4: Difference between revisions
From Joomla! Documentation
Added HTTP package refactoring |
Added JDocumentFeed changes |
||
| Line 40: | Line 40: | ||
*Old: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication | *Old: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication | ||
*New: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication | *New: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication | ||
=== Document === | |||
==== JDocumentFeed ==== | |||
The property type of JDocumentFeed::$lastBuildDate has changed from a string to a JDate object. The property was previously unused by the core Joomla API but extensions may have used it. | |||
==== JDocumentRendererFeedRss ==== | |||
In order to comply with the RSS feed specification, JDocumentRendererFeedRss now allows the lastBuildDate element to be configured using the JDocumentFeed::$lastBuildDate class property when a feed is rendered. This value defaults to the current time, as is the case with Joomla! 3.x and earlier, however the time can be correctly set by changing this class property to a JDate object representing the desired timestamp. | |||
=== HTTP === | === HTTP === | ||
Revision as of 17:39, 12 February 2017
This article or section is incomplete, which means it may be lacking information. You are welcome to assist in its completion by editing it as well. If this article or section has not been edited in several days, please consider helping complete the content.
This article was last edited by Mbabker (talk| contribs) 9 years ago. (Purge)
This document tracks potential backward compatibility issues for Joomla! 4. Listed are issues which potentially break extensions.
The base of this comparison is Joomla! 3.7.
Updated System Requirements
The system requirements have been updated as follows:
- PHP 5.5.9
- MySQL 5.5.3
- PostgreSQL 9.2
- SQL Server support has been dropped
Platform
The following changes have been made to Joomla! Platform libraries (this is primarily code found in the `libraries/joomla` or `libraries/legacy` directories in Joomla! 3).
Application
Removed Classes
The following classes have been removed in Joomla! 4.0:
- JApplicationWebRouter (use the `joomla/router` package instead)
- JApplicationWebRouterBase (use the `joomla/router` package instead)
- JApplicationWebRouterRest (use the `joomla/router` package instead)
Deprecated Classes
The following classes have been deprecated and scheduled for removal in Joomla! 5.0:
- JApplicationBase (use Joomla\Application\AbstractApplication instead)
CLI/Web Class Changes
The JApplicationCli and JApplicationWeb classes have been recomposed to extend from the Framework's Application package instead. This breaks type checks for a JApplicationBase object. For forward compatibility, it is recommended to check if application classes are an instance of Joomla\Application\AbstractApplication (JApplicationBase has extended this class since Joomla! 3.4).
Additionally, both of these classes are now abstract. Developers implementing these classes must provide a `doExecute` method with their application's logic.
JApplicationCli
- Old: JApplicationCli → JApplicationBase → Joomla\Application\AbstractApplication
- New: JApplicationCli → Joomla\Application\AbstractCliApplication → Joomla\Application\AbstractApplication
JApplicationWeb
- Old: JApplicationWeb → JApplicationBase → Joomla\Application\AbstractApplication
- New: JApplicationWeb → Joomla\Application\AbstractWebApplication → Joomla\Application\AbstractApplication
Document
JDocumentFeed
The property type of JDocumentFeed::$lastBuildDate has changed from a string to a JDate object. The property was previously unused by the core Joomla API but extensions may have used it.
JDocumentRendererFeedRss
In order to comply with the RSS feed specification, JDocumentRendererFeedRss now allows the lastBuildDate element to be configured using the JDocumentFeed::$lastBuildDate class property when a feed is rendered. This value defaults to the current time, as is the case with Joomla! 3.x and earlier, however the time can be correctly set by changing this class property to a JDate object representing the desired timestamp.
HTTP
Deprecated Classes and Interfaces
The following classes and interfaces have been deprecated and scheduled for removal in Joomla! 5.0:
- JHttpResponse (use Joomla\Http\Response instead)
- JHttpTransport (implement Joomla\Http\TransportInterface instead)
Class Changes
The Framework's HTTP package is now included in Joomla! 4.0 and JHttp and the JHttpTransport subclasses have been refactored to use the upstream package.
JHttp
The JHttp class constructor has been loosened with the following changes:
- The options parameter is no longer typehinted as a Joomla\Registry\Registry object, an array or any object implementing the ArrayAccess interface can be used instead
- The transport parameter now allows any Joomla\Http\TransportInterface object
JHttpTransport
The now deprecated JHttpTransport interface extends Joomla\Http\TransportInterface now and has caused backward compatibility breaking changes in the interface. The constructor is no longer part of the interface, and the interface's `request()` method has had a signature change. Specifically, the second parameter which previously typehinted the JUri class now typehints Joomla\Uri\UriInterface.