Deprecation: #107229 - Deprecate
Annotation namespace of Extbase attributes
See forge#107229
Description
With the removed support for PHP annotations in Extbase, the class namespace
\TYPO3\ no longer reflects classes using PHP
annotations. It now contains PHP attributes only.
The class namespace of all PHP attributes used with models, DTOs, and controller
actions in the Extbase context has been moved to
\TYPO3\.
Developers and integrators are advised to migrate existing class usages to the new namespace. The deprecated namespace will be removed in TYPO3 v15.0.
Impact
Usage of the deprecated class namespace is no longer recommended but will continue to work until TYPO3 v15.0.
Affected installations
Instances using the deprecated class namespace for Extbase attributes in models, DTOs, or controller actions are affected.
Migration
Aside from migrating PHP annotations to PHP attributes, existing usages of the class namespace
\TYPO3\ should be updated to
\TYPO3\:
-TYPO3\CMS\Extbase\Annotation
+TYPO3\CMS\Extbase\Attribute
Before:
use TYPO3\CMS\Extbase\Annotation as Extbase;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class MyModel extends AbstractEntity
{
#[Extbase\Validate(['validator' => 'NotEmpty'])]
protected string $foo = '';
}
After:
use TYPO3\CMS\Extbase\Attribute as Extbase;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class MyModel extends AbstractEntity
{
#[Extbase\Validate(['validator' => 'NotEmpty'])]
protected string $foo = '';
}