Deprecation: #95222 - Extbase ViewInterface¶
See forge#95222
Description¶
To further streamline Fluid view related class inheritance and dependencies,
the interface TYPO3\CMS\Extbase\Mvc\View\ViewInterface
has been marked
as deprecated and will be removed in TYPO3 v12.
Impact¶
This deprecation has little impact on TYPO3 v11: The interface is kept and still
carried around in the Core, no PHP E_USER_DEPRECATED
error is triggered.
The interface itself deviates from the casual view related classes only by requiring
an implementation of method initializeView()
which was never actively used,
calling that method will vanish in TYPO3 v12. The second deviation is method
setControllerContext()
, and class ControllerContext
has been marked as deprecated, too.
Affected Installations¶
The extension scanner will find usages of Extbase ViewInterface
as a strong match.
Migration¶
Some instances may rely on extensions that type hint ViewInterface
,
especially in the Extbase action controller method initializeView()
. The default
implementation of that method in TYPO3\CMS\Extbase\Mvc\Controller\ActionController
is
empty. To simplify compatibility for extensions supporting both TYPO3 v11 and TYPO3 v12,
that empty method will be removed in TYPO3 v12, but will still be called if it exists in classes
extending ActionController
.
Extension authors should thus avoid calling parent::initializeView($view)
in their
implementation of initializeView()
to prepare towards TYPO3 v12. Additionally, extension
authors should adapt the method signature to avoid a PHP contravariance violation:
// Old:
protected function initializeView(ViewInterface $view)
// New:
protected function initializeView($view)
Apart from that, usages of TYPO3\CMS\Extbase\Mvc\View\ViewInterface
should be changed
to the more specific TYPO3\CMS\Fluid\View\StandaloneView
- usually in non-Extbase
related classes, or to the less specific TYPO3Fluid\Fluid\View\ViewInterface
.
If using a custom view implementing ViewInterface
,
keep in mind that auto configuration based on the interface will be dropped in TYPO3 v12, you
may have to configure the service in Services.yaml
manually.