TYPO3 CMS  TYPO3_7-6
TYPO3\CMS\Extbase\Reflection\ObjectAccess Class Reference

Static Public Member Functions

static getProperty ($subject, $propertyName, $forceDirectAccess=false)
 
static getPropertyInternal ($subject, $propertyName, $forceDirectAccess, &$propertyExists)
 
static getPropertyPath ($subject, $propertyPath)
 
static setProperty (&$subject, $propertyName, $propertyValue, $forceDirectAccess=false)
 
static getGettablePropertyNames ($object)
 
static getSettablePropertyNames ($object)
 
static isPropertySettable ($object, $propertyName)
 
static isPropertyGettable ($object, $propertyName)
 
static getGettableProperties ($object)
 
static buildSetterMethodName ($propertyName)
 

Public Attributes

const ACCESS_GET = 0
 
const ACCESS_SET = 1
 
const ACCESS_PUBLIC = 2
 

Detailed Description

Provides methods to call appropriate getter/setter on an object given the property name. It does this following these rules:

  • if the target object is an instance of ArrayAccess, it gets/sets the property
  • if public getter/setter method exists, call it.
  • if public property exists, return/set the value of it.
  • else, throw exception

Definition at line 27 of file ObjectAccess.php.

Member Function Documentation

◆ buildSetterMethodName()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::buildSetterMethodName (   $propertyName)
static

Build the setter method name for a given property by capitalizing the first letter of the property, and prepending it with "set".

Parameters
string$propertyNameName of the property
Returns
string Name of the setter method name

Definition at line 397 of file ObjectAccess.php.

◆ getGettableProperties()

◆ getGettablePropertyNames()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::getGettablePropertyNames (   $object)
static

Returns an array of properties which can be get with the getProperty() method. Includes the following properties:

  • which can be get through a public getter method.
  • public properties which can be directly get.
Parameters
object$objectObject to receive property names for
Exceptions

Definition at line 232 of file ObjectAccess.php.

Referenced by TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertyNamesRespectsMethodArguments(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertyNamesReturnsAllPropertiesWhichAreAvailable(), and TYPO3\CMS\Extbase\Mvc\View\JsonView\transformObject().

◆ getProperty()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::getProperty (   $subject,
  $propertyName,
  $forceDirectAccess = false 
)
static

Get a property of a given object. Tries to get the property the following ways:

  • if the target is an array, and has this property, we call it.
  • if super cow powers should be used, fetch value through reflection
  • if public getter method exists, call it.
  • if the target object is an instance of ArrayAccess, it gets the property on it if it exists.
  • if public property exists, return the value of it.
  • else, throw exception
Parameters
mixed$subjectObject or array to get the property from
string$propertyNamename of the property to retrieve
bool$forceDirectAccessdirectly access property using reflection(!)
Exceptions
Exception

Definition at line 54 of file ObjectAccess.php.

Referenced by TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\AutocompleteController\autocompleteAction(), TYPO3\CMS\Extbase\Persistence\Generic\Backend\determineStoragePageIdForNewRecord(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnArray(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnArrayObject(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnObjectImplementingArrayAccess(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnObjectStorageObject(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForGetterProperty(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForPublicProperty(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForUnexposedPropertyIfForceDirectAccessIsTrue(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForUnknownPropertyIfForceDirectAccessIsTrue(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsPropertyNotAccessibleExceptionForNotExistingPropertyIfForceDirectAccessIsTrue(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsThrowsExceptionIfArrayKeyDoesNotExist(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsThrowsExceptionIfPropertyDoesNotExist(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyThrowsExceptionIfThePropertyNameIsNotAString(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyTriesToCallABooleanGetterMethodIfItExists(), TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator\getPropertyValue(), and TYPO3\CMS\Extbase\Mvc\View\JsonView\transformObject().

◆ getPropertyInternal()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::getPropertyInternal (   $subject,
  $propertyName,
  $forceDirectAccess,
$propertyExists 
)
static

Gets a property of a given object or array. This is an internal method that does only limited type checking for performance reasons. If you can't make sure that $subject is either of type array or object and $propertyName of type string you should use getProperty() instead.

See also
getProperty()
Parameters
mixed$subjectObject or array to get the property from
string$propertyNamename of the property to retrieve
bool$forceDirectAccessdirectly access property using reflection(!)
bool&$propertyExists(by reference) will be set to TRUE if the specified property exists and is gettable
Exceptions
Exception

Definition at line 86 of file ObjectAccess.php.

References TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger().

Referenced by TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode\getPropertyPath().

◆ getPropertyPath()

◆ getSettablePropertyNames()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::getSettablePropertyNames (   $object)
static

Returns an array of properties which can be set with the setProperty() method. Includes the following properties:

  • which can be set through a public setter method.
  • public properties which can be directly set.
Parameters
object$objectObject to receive property names for
Exceptions

Definition at line 288 of file ObjectAccess.php.

Referenced by TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getSettablePropertyNamesReturnsAllPropertiesWhichAreAvailable(), and TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getSettablePropertyNamesReturnsPropertyNamesOfStdClass().

◆ isPropertyGettable()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::isPropertyGettable (   $object,
  $propertyName 
)
static

Tells if the value of the specified property can be retrieved by this Object Accessor.

Parameters
object$objectObject containting the property
string$propertyNameName of the property to check
Exceptions

Definition at line 339 of file ObjectAccess.php.

Referenced by TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator\getPropertyValue().

◆ isPropertySettable()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::isPropertySettable (   $object,
  $propertyName 
)
static

Tells if the value of the specified property can be set by this Object Accessor.

Parameters
object$objectObject containting the property
string$propertyNameName of the property to check
Exceptions

Definition at line 317 of file ObjectAccess.php.

◆ setProperty()

static TYPO3\CMS\Extbase\Reflection\ObjectAccess::setProperty ( $subject,
  $propertyName,
  $propertyValue,
  $forceDirectAccess = false 
)
static

Set a property for a given object. Tries to set the property the following ways:

  • if target is an array, set value
  • if super cow powers should be used, set value through reflection
  • if public setter method exists, call it.
  • if public property exists, set it directly.
  • if the target object is an instance of ArrayAccess, it sets the property on it without checking if it existed.
  • else, return FALSE
Parameters
mixed&$subjectThe target object or array
string$propertyNameName of the property to set
mixed$propertyValueValue of the property
bool$forceDirectAccessdirectly access property using reflection(!)
Exceptions

Definition at line 188 of file ObjectAccess.php.

Referenced by TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\CollectionValidatorTest\collectionValidatorIsValidEarlyReturnsOnUnitializedLazyObjectStorages(), TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter\convertFrom(), TYPO3\CMS\Extbase\Property\TypeConverter\ObjectConverter\convertFrom(), TYPO3\CMS\Form\Mvc\Controller\ControllerContext\extend(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyCallsASetterMethodToSetThePropertyValueIfOneIsAvailable(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyCanDirectlySetValuesInAnArrayObjectOrArray(), TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyThrowsExceptionIfThePropertyNameIsNotAString(), and TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyWorksWithPublicProperty().

Member Data Documentation

◆ ACCESS_GET

const TYPO3\CMS\Extbase\Reflection\ObjectAccess::ACCESS_GET = 0

Definition at line 29 of file ObjectAccess.php.

◆ ACCESS_PUBLIC

const TYPO3\CMS\Extbase\Reflection\ObjectAccess::ACCESS_PUBLIC = 2

Definition at line 33 of file ObjectAccess.php.

◆ ACCESS_SET

const TYPO3\CMS\Extbase\Reflection\ObjectAccess::ACCESS_SET = 1

Definition at line 31 of file ObjectAccess.php.