TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-92386:
|
||||
|
||||
================================================
|
||||
Deprecation: #92386 - Extbase property injection
|
||||
================================================
|
||||
|
||||
See :issue:`92386`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Since core dependency injection is in place and is about to replace the extbase dependency injection completely,
|
||||
using property injection via the :php:`@Extbase\Inject` annotation has been marked as deprecated.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Classes that use extbase property injection will experience non injected services for properties that have a :php:`@Extbase\Inject` annotation.
|
||||
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
All installations that use extbase property injection via annotation :php:`@Extbase\Inject`.
|
||||
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Extbase property injection can be replaced by one of the following methods:
|
||||
|
||||
- constructor injection: works both with core and extbase dependency injection and is well suited to make extensions compatible for multiple TYPO3 versions.
|
||||
- setter injection: Basically the same as constructor injection. Both the core and extbase DI can handle setter injection and both are supported in different TYPO3 versions.
|
||||
- (core) property injection: This kind of injection can be used but it requires the configuration of services via a :file:`Services.yaml` in the :file:`Configuration` folder of an extension.
|
||||
|
||||
|
||||
Given the following example for a :php:`@Extbase\Inject` annotation based injection:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
/**
|
||||
* @var MyService
|
||||
* @Extbase\Inject
|
||||
*/
|
||||
protected $myService;
|
||||
|
||||
|
||||
This service injection can be changed to constructor injection by adding the
|
||||
service as constructor argument and removing the :php:`@Extbase\Inject` annotation:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
/**
|
||||
@var MyService
|
||||
*/
|
||||
protected $MyService;
|
||||
|
||||
public function __construct(MyService $MyService) {
|
||||
$this->myService = $myService;
|
||||
}
|
||||
|
||||
Please consult the dependency-injection_ documentation for more information.
|
||||
|
||||
.. _dependency-injection: https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/DependencyInjection/Index.html
|
||||
|
||||
.. index:: PHP-API, FullyScanned, ext:extbase
|
||||
Reference in New Issue
Block a user