‪TYPO3CMS  11.5
ObjectAccessTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
29 
33 class ‪ObjectAccessTest extends UnitTestCase
34 {
38  protected ‪$resetSingletonInstances = true;
39 
41 
45  protected function ‪setUp(): void
46  {
47  parent::setUp();
48  $this->dummyObject = new ‪DummyClassWithGettersAndSetters();
49  $this->dummyObject->setProperty('string1');
50  $this->dummyObject->setAnotherProperty(42);
51  }
52 
57  {
58  $property = ‪ObjectAccess::getProperty($this->dummyObject, 'property');
59  self::assertEquals('string1', $property);
60  }
61 
66  {
67  $property = ‪ObjectAccess::getProperty($this->dummyObject, 'publicProperty2');
68  self::assertEquals(42, $property, 'A property of a given object was not returned correctly.');
69  }
70 
75  {
76  $this->expectException(PropertyNotAccessibleException::class);
77  $this->expectExceptionCode(1476109666);
78  ‪ObjectAccess::getProperty($this->dummyObject, 'notExistingProperty');
79  }
80 
85  {
86  $result = ‪ObjectAccess::getProperty([], 'notExistingProperty');
87  self::assertNull($result);
88  }
89 
94  {
95  $property = ‪ObjectAccess::getProperty($this->dummyObject, 'booleanProperty');
96  self::assertTrue($property);
97  }
98 
103  {
104  self::assertFalse(‪ObjectAccess::setProperty($this->dummyObject, 'protectedProperty', 42));
105  }
106 
111  {
112  ‪ObjectAccess::setProperty($this->dummyObject, 'property', 4242);
113  self::assertEquals(4242, $this->dummyObject->getProperty(), 'setProperty does not work with setter.');
114  }
115 
119  public function ‪setPropertyWorksWithPublicProperty(): void
120  {
121  ‪ObjectAccess::setProperty($this->dummyObject, 'publicProperty', 4242);
122  self::assertEquals(4242, $this->dummyObject->publicProperty, 'setProperty does not work with public property.');
123  }
124 
129  {
130  $arrayObject = new \ArrayObject();
131  $array = [];
132  ‪ObjectAccess::setProperty($arrayObject, 'publicProperty', 4242);
133  ‪ObjectAccess::setProperty($array, 'key', 'value');
134  self::assertEquals(4242, $arrayObject['publicProperty']);
135  self::assertEquals('value', $array['key']);
136  }
137 
142  {
143  $arrayObject = new \ArrayObject(['key' => 'value']);
144  $actual = ‪ObjectAccess::getProperty($arrayObject, 'key');
145  self::assertEquals('value', $actual, 'getProperty does not work with ArrayObject property.');
146  }
147 
152  {
153  $objectStorage = new ObjectStorage();
154  $object = new \stdClass();
155  $objectStorage->attach($object);
156  $actual = ‪ObjectAccess::getProperty($objectStorage, '0');
157  self::assertSame($object, $actual, 'getProperty does not work with ObjectStorage property.');
158  }
159 
164  {
165  $arrayAccessInstance = new ArrayAccessClass(['key' => 'value']);
166  $actual = ‪ObjectAccess::getProperty($arrayAccessInstance, 'key');
167  self::assertEquals('value', $actual, 'getProperty does not work with Array Access property.');
168  }
169 
174  {
175  $arrayAccessInstance = new ArrayAccessClass([]);
176  $actual = ‪ObjectAccess::getProperty($arrayAccessInstance, 'virtual');
177  self::assertEquals('default-value', $actual, 'getProperty does not work with Array Access property.');
178  }
179 
184  {
185  $arrayAccessInstance = new ArrayAccessClass(['virtual' => 'overridden-value']);
186  $actual = ‪ObjectAccess::getProperty($arrayAccessInstance, 'virtual');
187  self::assertEquals('overridden-value', $actual, 'getProperty does not work with Array Access property.');
188  }
189 
193  public function ‪getPropertyCanAccessPropertiesOfAnArray(): void
194  {
195  $array = ['key' => 'value'];
196  $expected = ‪ObjectAccess::getProperty($array, 'key');
197  self::assertEquals('value', $expected, 'getProperty does not work with Array property.');
198  }
199 
203  public function ‪getPropertyPathCanAccessPropertiesOfAnArray(): void
204  {
205  $array = ['parent' => ['key' => 'value']];
206  $actual = ‪ObjectAccess::getPropertyPath($array, 'parent.key');
207  self::assertEquals('value', $actual, 'getPropertyPath does not work with Array property.');
208  }
209 
214  {
215  $array = ['parent' => new \ArrayObject(['key' => 'value'])];
216  $actual = ‪ObjectAccess::getPropertyPath($array, 'parent.key');
217  self::assertEquals('value', $actual, 'getPropertyPath does not work with Array Access property.');
218  }
219 
224  {
225  $objectStorage = $this->‪setUpObjectStorageWithTwoItems();
226  $array = [
227  'parent' => $objectStorage,
228  ];
229  self::assertSame('value', ‪ObjectAccess::getPropertyPath($array, 'parent.0.key'));
230  self::assertSame('value2', ‪ObjectAccess::getPropertyPath($array, 'parent.1.key'));
231  }
232 
237  {
238  $objectStorage = $this->‪setUpObjectStorageWithTwoItems();
239  $i = 0;
240  foreach ($objectStorage as $object) {
241  ‪ObjectAccess::getPropertyPath($objectStorage, '0.key');
242  $i++;
243  }
244  self::assertSame(2, $i);
245  }
246 
250  protected function ‪setUpObjectStorageWithTwoItems(): ObjectStorage
251  {
252  $objectStorage = new ObjectStorage();
253  $exampleObject = new \stdClass();
254  $exampleObject->key = 'value';
255  $exampleObject2 = new \stdClass();
256  $exampleObject2->key = 'value2';
257  $objectStorage->attach($exampleObject);
258  $objectStorage->attach($exampleObject2);
259  return $objectStorage;
260  }
261 
266  {
267  $objectStorage = $this->‪setUpSplObjectStorageWithTwoItems();
268  $array = [
269  'parent' => $objectStorage,
270  ];
271  self::assertSame('value', ‪ObjectAccess::getPropertyPath($array, 'parent.0.key'));
272  self::assertSame('value2', ‪ObjectAccess::getPropertyPath($array, 'parent.1.key'));
273  }
274 
279  {
280  $objectStorage = $this->‪setUpSplObjectStorageWithTwoItems();
281  $i = 0;
282  foreach ($objectStorage as $object) {
283  ‪ObjectAccess::getPropertyPath($objectStorage, '0.key');
284  $i++;
285  }
286  self::assertSame(2, $i);
287  }
288 
292  protected function ‪setUpSplObjectStorageWithTwoItems(): \SplObjectStorage
293  {
294  $objectStorage = new \SplObjectStorage();
295  $exampleObject = new \stdClass();
296  $exampleObject->key = 'value';
297  $exampleObject2 = new \stdClass();
298  $exampleObject2->key = 'value2';
299  $objectStorage->attach($exampleObject);
300  $objectStorage->attach($exampleObject2);
301  return $objectStorage;
302  }
303 
308  {
309  GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata'));
310  $gettablePropertyNames = ‪ObjectAccess::getGettablePropertyNames($this->dummyObject);
311  $expectedPropertyNames = ['anotherBooleanProperty', 'anotherProperty', 'booleanProperty', 'property', 'property2', 'publicProperty', 'publicProperty2', 'someValue'];
312  self::assertEquals($gettablePropertyNames, $expectedPropertyNames, 'getGettablePropertyNames returns not all gettable properties.');
313  }
314 
319  {
320  $dateTimeZone = new \DateTimeZone('+2');
321  GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata'));
322  $gettablePropertyNames = ‪ObjectAccess::getGettablePropertyNames($dateTimeZone);
323  $expectedPropertyNames = ['location', 'name'];
324  foreach ($expectedPropertyNames as $expectedPropertyName) {
325  self::assertContains($expectedPropertyName, $gettablePropertyNames);
326  }
327  }
328 
333  {
334  GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata'));
335  $settablePropertyNames = ‪ObjectAccess::getSettablePropertyNames($this->dummyObject);
336  $expectedPropertyNames = ['anotherBooleanProperty', 'anotherProperty', 'property', 'property2', 'publicProperty', 'publicProperty2', 'writeOnlyMagicProperty'];
337  self::assertEquals($settablePropertyNames, $expectedPropertyNames, 'getSettablePropertyNames returns not all settable properties.');
338  }
339 
344  {
345  $stdClassObject = new \stdClass();
346  $stdClassObject->property = 'string1';
347  $stdClassObject->property2 = null;
348  $settablePropertyNames = ‪ObjectAccess::getSettablePropertyNames($stdClassObject);
349  $expectedPropertyNames = ['property', 'property2'];
350  self::assertEquals($expectedPropertyNames, $settablePropertyNames, 'getSettablePropertyNames returns not all settable properties.');
351  }
352 
357  {
358  GeneralUtility::setSingletonInstance(ReflectionService::class, new ReflectionService(new NullFrontend('extbase'), 'ClassSchemata'));
359  $allProperties = ‪ObjectAccess::getGettableProperties($this->dummyObject);
360  $expectedProperties = [
361  'anotherBooleanProperty' => true,
362  'anotherProperty' => 42,
363  'booleanProperty' => true,
364  'property' => 'string1',
365  'property2' => null,
366  'publicProperty' => null,
367  'publicProperty2' => 42,
368  'someValue' => true,
369  ];
370  self::assertEquals($allProperties, $expectedProperties, 'expectedProperties did not return the right values for the properties.');
371  }
372 
377  {
378  $stdClassObject = new \stdClass();
379  $stdClassObject->property = 'string1';
380  $stdClassObject->property2 = null;
381  $stdClassObject->publicProperty2 = 42;
382  $allProperties = ‪ObjectAccess::getGettableProperties($stdClassObject);
383  $expectedProperties = [
384  'property' => 'string1',
385  'property2' => null,
386  'publicProperty2' => 42,
387  ];
388  self::assertEquals($expectedProperties, $allProperties, 'expectedProperties did not return the right values for the properties.');
389  }
390 
394  public function ‪isPropertySettableTellsIfAPropertyCanBeSet(): void
395  {
396  self::assertTrue(‪ObjectAccess::isPropertySettable($this->dummyObject, 'writeOnlyMagicProperty'));
397  self::assertTrue(‪ObjectAccess::isPropertySettable($this->dummyObject, 'publicProperty'));
398  self::assertTrue(‪ObjectAccess::isPropertySettable($this->dummyObject, 'property'));
399  self::assertFalse(‪ObjectAccess::isPropertySettable($this->dummyObject, 'privateProperty'));
400  }
401 
405  public function ‪isPropertySettableWorksOnStdClass(): void
406  {
407  $stdClassObject = new \stdClass();
408  $stdClassObject->property = 'foo';
409  self::assertTrue(‪ObjectAccess::isPropertySettable($stdClassObject, 'property'));
410  self::assertFalse(‪ObjectAccess::isPropertySettable($stdClassObject, 'undefinedProperty'));
411  }
412 
420  public function ‪isPropertyGettableTellsIfAPropertyCanBeRetrieved($property, $expected): void
421  {
422  self::assertEquals($expected, ‪ObjectAccess::isPropertyGettable($this->dummyObject, $property));
423  }
424 
428  public function ‪propertyGettableTestValues(): array
429  {
430  return [
431  ['publicProperty', true],
432  ['property', true],
433  ['booleanProperty', true],
434  ['anotherBooleanProperty', true],
435  ['privateProperty', false],
436  ['writeOnlyMagicProperty', false],
437  ];
438  }
439 
443  public function ‪isPropertyGettableWorksOnArrayAccessObjects(): void
444  {
445  $arrayObject = new \ArrayObject();
446  $arrayObject['key'] = 'v';
447  self::assertTrue(‪ObjectAccess::isPropertyGettable($arrayObject, 'key'));
448  self::assertFalse(‪ObjectAccess::isPropertyGettable($arrayObject, 'undefinedKey'));
449  }
450 
455  {
457  $object = new class () extends \ArrayObject {
458  private $regularProperty = 'foo';
459 
460  public function getRegularProperty(): string
461  {
462  return $this->regularProperty;
463  }
464  };
465 
466  $object['key'] = 'v';
467  self::assertTrue(‪ObjectAccess::isPropertyGettable($object, 'regularProperty'));
468  self::assertTrue(‪ObjectAccess::isPropertyGettable($object, 'key'));
469 
470  self::assertSame('foo', ‪ObjectAccess::getProperty($object, 'regularProperty'));
471  self::assertSame('v', ‪ObjectAccess::getProperty($object, 'key'));
472  }
473 
477  public function ‪isPropertyGettableWorksOnStdClass(): void
478  {
479  $stdClassObject = new \stdClass();
480  $stdClassObject->property = 'foo';
481  self::assertTrue(‪ObjectAccess::isPropertyGettable($stdClassObject, 'property'));
482  self::assertFalse(‪ObjectAccess::isPropertyGettable($stdClassObject, 'undefinedProperty'));
483  }
484 
489  {
490  $alternativeObject = new DummyClassWithGettersAndSetters();
491  $alternativeObject->setProperty('test');
492  $this->dummyObject->setProperty2($alternativeObject);
493  $expected = 'test';
494  $actual = ‪ObjectAccess::getPropertyPath($this->dummyObject, 'property2.property');
495  self::assertEquals($expected, $actual);
496  }
497 
502  {
503  $alternativeObject = new DummyClassWithGettersAndSetters();
504  $alternativeObject->setProperty(new \stdClass());
505  $this->dummyObject->setProperty2($alternativeObject);
506  self::assertNull(‪ObjectAccess::getPropertyPath($this->dummyObject, 'property2.property.not.existing'));
507  }
508 
513  {
514  $string = 'Hello world';
515  self::assertNull(‪ObjectAccess::getPropertyPath($string, 'property2'));
516  }
517 
522  {
523  $object = new \stdClass();
524  $object->foo = 'Hello World';
525  self::assertNull(‪ObjectAccess::getPropertyPath($object, 'foo.bar'));
526  }
527 }
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertySettableWorksOnStdClass
‪isPropertySettableWorksOnStdClass()
Definition: ObjectAccessTest.php:404
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyWorksWithPublicProperty
‪setPropertyWorksWithPublicProperty()
Definition: ObjectAccessTest.php:118
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfArrayAccessWithPriorityForOffsetIfOffsetExists
‪getPropertyCanAccessPropertiesOfArrayAccessWithPriorityForOffsetIfOffsetExists()
Definition: ObjectAccessTest.php:182
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getSettablePropertyNamesReturnsAllPropertiesWhichAreAvailable
‪getSettablePropertyNamesReturnsAllPropertiesWhichAreAvailable()
Definition: ObjectAccessTest.php:331
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnObjectImplementingArrayAccess
‪getPropertyCanAccessPropertiesOfAnObjectImplementingArrayAccess()
Definition: ObjectAccessTest.php:162
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getSettablePropertyNamesReturnsPropertyNamesOfStdClass
‪getSettablePropertyNamesReturnsPropertyNamesOfStdClass()
Definition: ObjectAccessTest.php:342
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\getProperty
‪static mixed getProperty($subject, string $propertyName)
Definition: ObjectAccess.php:61
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathOnSplObjectStorageDoesNotAffectOngoingLoop
‪getPropertyPathOnSplObjectStorageDoesNotAffectOngoingLoop()
Definition: ObjectAccessTest.php:277
‪TYPO3\CMS\Extbase\Reflection\Exception\PropertyNotAccessibleException
Definition: PropertyNotAccessibleException.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathCanAccessPropertiesOfAnExtbaseObjectStorageObject
‪getPropertyPathCanAccessPropertiesOfAnExtbaseObjectStorageObject()
Definition: ObjectAccessTest.php:222
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertyNamesRespectsMethodArguments
‪getGettablePropertyNamesRespectsMethodArguments()
Definition: ObjectAccessTest.php:317
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertyGettableTellsIfAPropertyCanBeRetrieved
‪isPropertyGettableTellsIfAPropertyCanBeRetrieved($property, $expected)
Definition: ObjectAccessTest.php:419
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertyGettableWorksOnObjectsMixingRegularPropertiesAndArrayAccess
‪isPropertyGettableWorksOnObjectsMixingRegularPropertiesAndArrayAccess()
Definition: ObjectAccessTest.php:453
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setUpObjectStorageWithTwoItems
‪ObjectStorage setUpObjectStorageWithTwoItems()
Definition: ObjectAccessTest.php:249
‪TYPO3\CMS\Core\Cache\Frontend\NullFrontend
Definition: NullFrontend.php:29
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\getGettablePropertyNames
‪static array getGettablePropertyNames(object $object)
Definition: ObjectAccess.php:200
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathCanRecursivelyGetPropertiesOfAnObject
‪getPropertyPathCanRecursivelyGetPropertiesOfAnObject()
Definition: ObjectAccessTest.php:487
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\DummyClassWithGettersAndSetters
Definition: DummyClassWithGettersAndSetters.php:24
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess
Definition: ObjectAccess.php:39
‪TYPO3\CMS\Extbase\Persistence\ObjectStorage
Definition: ObjectStorage.php:32
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyThrowsExceptionIfPropertyDoesNotExist
‪getPropertyThrowsExceptionIfPropertyDoesNotExist()
Definition: ObjectAccessTest.php:73
‪TYPO3\CMS\Extbase\Reflection\ReflectionService
Definition: ReflectionService.php:28
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnArray
‪getPropertyCanAccessPropertiesOfAnArray()
Definition: ObjectAccessTest.php:192
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathReturnsNullForNonExistingPropertyPath
‪getPropertyPathReturnsNullForNonExistingPropertyPath()
Definition: ObjectAccessTest.php:500
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\propertyGettableTestValues
‪array propertyGettableTestValues()
Definition: ObjectAccessTest.php:427
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForPublicProperty
‪getPropertyReturnsExpectedValueForPublicProperty()
Definition: ObjectAccessTest.php:64
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertiesReturnsPropertiesOfStdClass
‪getGettablePropertiesReturnsPropertiesOfStdClass()
Definition: ObjectAccessTest.php:375
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setUp
‪setUp()
Definition: ObjectAccessTest.php:44
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyTriesToCallABooleanGetterMethodIfItExists
‪getPropertyTriesToCallABooleanGetterMethodIfItExists()
Definition: ObjectAccessTest.php:92
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertyGettableWorksOnArrayAccessObjects
‪isPropertyGettableWorksOnArrayAccessObjects()
Definition: ObjectAccessTest.php:442
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyCallsASetterMethodToSetThePropertyValueIfOneIsAvailable
‪setPropertyCallsASetterMethodToSetThePropertyValueIfOneIsAvailable()
Definition: ObjectAccessTest.php:109
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathCanAccessPropertiesOfAnArray
‪getPropertyPathCanAccessPropertiesOfAnArray()
Definition: ObjectAccessTest.php:202
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsNullIfArrayKeyDoesNotExist
‪getPropertyReturnsNullIfArrayKeyDoesNotExist()
Definition: ObjectAccessTest.php:83
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\isPropertyGettable
‪static bool isPropertyGettable($object, $propertyName)
Definition: ObjectAccess.php:352
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: ObjectAccessTest.php:37
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnObjectStorageObject
‪getPropertyCanAccessPropertiesOfAnObjectStorageObject()
Definition: ObjectAccessTest.php:150
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertiesReturnsTheCorrectValuesForAllProperties
‪getGettablePropertiesReturnsTheCorrectValuesForAllProperties()
Definition: ObjectAccessTest.php:355
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\getGettableProperties
‪static array getGettableProperties(object $object)
Definition: ObjectAccess.php:371
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertyGettableWorksOnStdClass
‪isPropertyGettableWorksOnStdClass()
Definition: ObjectAccessTest.php:476
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\getSettablePropertyNames
‪static array getSettablePropertyNames(object $object)
Definition: ObjectAccess.php:296
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\$dummyObject
‪DummyClassWithGettersAndSetters $dummyObject
Definition: ObjectAccessTest.php:39
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyReturnsExpectedValueForGetterProperty
‪getPropertyReturnsExpectedValueForGetterProperty()
Definition: ObjectAccessTest.php:55
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setUpSplObjectStorageWithTwoItems
‪SplObjectStorage setUpSplObjectStorageWithTwoItems()
Definition: ObjectAccessTest.php:291
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\Fixture\ArrayAccessClass
Definition: ArrayAccessClass.php:24
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfAnArrayObject
‪getPropertyCanAccessPropertiesOfAnArrayObject()
Definition: ObjectAccessTest.php:140
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\getPropertyPath
‪static mixed getPropertyPath($subject, string $propertyPath)
Definition: ObjectAccess.php:140
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathReturnsNullIfSubjectOnPathIsNoObject
‪getPropertyPathReturnsNullIfSubjectOnPathIsNoObject()
Definition: ObjectAccessTest.php:520
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyReturnsFalseIfPropertyIsNotAccessible
‪setPropertyReturnsFalseIfPropertyIsNotAccessible()
Definition: ObjectAccessTest.php:101
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\setProperty
‪static bool setProperty(&$subject, string $propertyName, $propertyValue)
Definition: ObjectAccess.php:170
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathCanAccessPropertiesOfAnObjectImplementingArrayAccess
‪getPropertyPathCanAccessPropertiesOfAnObjectImplementingArrayAccess()
Definition: ObjectAccessTest.php:212
‪TYPO3\CMS\Extbase\Reflection\ObjectAccess\isPropertySettable
‪static bool isPropertySettable(object $object, $propertyName)
Definition: ObjectAccess.php:332
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\setPropertyCanDirectlySetValuesInAnArrayObjectOrArray
‪setPropertyCanDirectlySetValuesInAnArrayObjectOrArray()
Definition: ObjectAccessTest.php:127
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getGettablePropertyNamesReturnsAllPropertiesWhichAreAvailable
‪getGettablePropertyNamesReturnsAllPropertiesWhichAreAvailable()
Definition: ObjectAccessTest.php:306
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathOnObjectStorageDoesNotAffectOngoingLoop
‪getPropertyPathOnObjectStorageDoesNotAffectOngoingLoop()
Definition: ObjectAccessTest.php:235
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathReturnsNullIfSubjectIsNoObject
‪getPropertyPathReturnsNullIfSubjectIsNoObject()
Definition: ObjectAccessTest.php:511
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest
Definition: ObjectAccessTest.php:34
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyPathCanAccessPropertiesOfAnSplObjectStorageObject
‪getPropertyPathCanAccessPropertiesOfAnSplObjectStorageObject()
Definition: ObjectAccessTest.php:264
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\getPropertyCanAccessPropertiesOfArrayAccessWithGetterMethodWhenOffsetNotExists
‪getPropertyCanAccessPropertiesOfArrayAccessWithGetterMethodWhenOffsetNotExists()
Definition: ObjectAccessTest.php:172
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection
‪TYPO3\CMS\Extbase\Tests\Unit\Reflection\ObjectAccessTest\isPropertySettableTellsIfAPropertyCanBeSet
‪isPropertySettableTellsIfAPropertyCanBeSet()
Definition: ObjectAccessTest.php:393