Deprecation: #87332 - Avoid runtime reflection calls in ObjectAccess¶
See forge#87332
Description¶
Class \TYPO3\CMS\Extbase\Reflection\ObjectAccess
uses reflection to make non public properties gettable and settable.
This behaviour is triggered by setting the argument $forceDirectAccess
of methods
getProperty
getPropertyInternal
setProperty
to true
. Triggering this behaviour has been marked as deprecated and will be removed in TYPO3 11.0.
Method \TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName
has been marked as deprecated and will be removed in TYPO3 11.0.
Impact¶
- Accessing non public properties via the mentioned methods will no longer work in TYPO3 11.0.
- Calling
\TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName
will no longer work in TYPO3 11.0.
Affected Installations¶
- All installations that use the mentioned methods with argument
$forceDirectAccess
set totrue
. - All installations that call
\TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName
.
Migration¶
1) Make sure the affected property is accessible by either making it public or providing getters/hassers/issers or setters
(getProperty()
, hasProperty()
, isProperty()
, setProperty()
).
- Build setter names manually:
$setterMethodName = 'set' . ucfirst($propertyName);