142 lines
3.6 KiB
ReStructuredText
142 lines
3.6 KiB
ReStructuredText
.. include:: /Includes.rst.txt
|
|
|
|
.. _deprecation-83167:
|
|
|
|
=======================================================================================
|
|
Deprecation: #83167 - Replace @validate with @TYPO3\\CMS\\Extbase\\Annotation\\Validate
|
|
=======================================================================================
|
|
|
|
See :issue:`83167`
|
|
|
|
Description
|
|
===========
|
|
|
|
The :php:`@validate` annotation has been marked as deprecated and should be replaced with the doctrine annotation
|
|
:php:`@TYPO3\CMS\Extbase\Annotation\Validate`.
|
|
|
|
|
|
Impact
|
|
======
|
|
|
|
Classes using :php:`@validate` will trigger a PHP :php:`E_USER_DEPRECATED` error.
|
|
|
|
|
|
Affected Installations
|
|
======================
|
|
|
|
All extensions that use :php:`@validate`
|
|
|
|
|
|
Migration
|
|
=========
|
|
|
|
Use :php:`@TYPO3\CMS\Extbase\Annotation\Validate` instead.
|
|
|
|
|
|
Examples:
|
|
---------
|
|
|
|
The following examples show both the old and the new way of using validation annotations. Both versions can still be used
|
|
in the same doc block, but you should start using the new way today.
|
|
|
|
.. code-block:: php
|
|
|
|
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
|
|
|
|
|
.. note::
|
|
|
|
Doctrine annotations are actual classes, so they can be either used via FQCN, imported via the use statement or even
|
|
be aliased which is the preferred way. As doctrine annotations can only be used in the Extbase context (for now), the
|
|
aliased version makes that perfectly clear even for people that are new to TYPO3.
|
|
|
|
.. tip::
|
|
|
|
When using PhpStorm, you can install the `PHP Annotation` plugin that recognizes the annotation classes and makes you
|
|
jump directly into them. Also, it enables autocompletion for annotation options.
|
|
|
|
Validators for class properties
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This is how annotations look like, that register validators without options
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @validate NotEmpty
|
|
* @Extbase\Validate("NotEmpty")
|
|
* @var Foo
|
|
*/
|
|
public $property;
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @validate NotEmpty
|
|
* @Extbase\Validate(validator="NotEmpty")
|
|
* @var Foo
|
|
*/
|
|
public $property;
|
|
|
|
This is how annotations look like, that register validators with options
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @validate StringLength(minimum=3, maximum=50)
|
|
* @Extbase\Validate("StringLength", options={"minimum": 3, "maximum": 50})
|
|
* @var Foo
|
|
*/
|
|
public $property;
|
|
|
|
.. important::
|
|
|
|
Registering multiple validators, separated by comma, is not possible any more. Instead, use one validator per line.
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @validate StringLength(minimum=3), StringLength(maximum=50)
|
|
* @Extbase\Validate("StringLength", options={"minimum": 3})
|
|
* @Extbase\Validate("StringLength", options={"maximum": 50})
|
|
* @var Foo
|
|
*/
|
|
public $property;
|
|
|
|
Validators for method params
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. important::
|
|
|
|
When using validators for method params, you need to define what param the validator is registered for. Also, please
|
|
note that the param name does no longer include the dollar sign.
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @validate $bar NotEmpty
|
|
* @Extbase\Validate("NotEmpty", param="bar")
|
|
* @var string $foo
|
|
* @var string $bar
|
|
*/
|
|
public function method(string $foo, string $bar)
|
|
{
|
|
}
|
|
|
|
Full qualified validator class names and aliases
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Of course it's still possible to reference validators by extension key, aliases and FQCN's.
|
|
|
|
.. code-block:: php
|
|
|
|
/**
|
|
* @Extbase\Validate("NotEmpty")
|
|
* @Extbase\Validate("TYPO3.CMS.Extbase:NotEmpty")
|
|
* @Extbase\Validate("TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator")
|
|
* @Extbase\Validate("\TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator")
|
|
*/
|
|
protected $property;
|
|
|
|
.. index:: PHP-API, ext:extbase, FullyScanned
|