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

  1. Accessing non public properties via the mentioned methods will no longer work in TYPO3 11.0.

  2. Calling \TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName will no longer work in TYPO3 11.0.

Affected Installations

  1. All installations that use the mentioned methods with argument $forceDirectAccess set to true.

  2. 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()).

  1. Build setter names manually: $setterMethodName = 'set' . ucfirst($propertyName);