Deprecation: #87332 - Avoid runtime reflection calls in ObjectAccess

See Issue #87332

Description

  1. 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 or setProperty to true. Triggering this behaviour is deprecated and will be removed in TYPO3 11.0.
  2. Method \TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName has been 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()).
  2. Build setter names manually: $setterMethodName = 'set' . ucfirst($propertyName);