[+TASK] Extbase (Reflection): ObjectAccess::getProperty now also supports arrays...
authorSebastian Kurfürst <sebastian@typo3.org>
Wed, 21 Oct 2009 09:44:20 +0000 (09:44 +0000)
committerSebastian Kurfürst <sebastian@typo3.org>
Wed, 21 Oct 2009 09:44:20 +0000 (09:44 +0000)
typo3/sysext/extbase/Classes/Reflection/ObjectAccess.php

index b56a3ac..6659b93 100644 (file)
@@ -54,10 +54,12 @@ class Tx_Extbase_Reflection_ObjectAccess {
         * @return object Value of the property.
         */
        static public function getProperty($object, $propertyName) {
-               if (!is_object($object)) throw new InvalidArgumentException('$object must be an object, ' . gettype($object). ' given.', 1237301367);
+               if (!is_object($object) && !is_array($object)) throw new InvalidArgumentException('$object must be an object or an array, ' . gettype($object). ' given.', 1237301367);
                if (!is_string($propertyName)) throw new InvalidArgumentException('Given property name is not of type string.', 1231178303);
 
-               if (is_callable(array($object, $getterMethodName = self::buildGetterMethodName($propertyName)))) {
+               if (is_array($object) && array_key_exists($propertyName, $object)) {
+                       return $object[$propertyName];
+               } elseif (is_callable(array($object, $getterMethodName = self::buildGetterMethodName($propertyName)))) {
                        return call_user_func(array($object, $getterMethodName));
                } elseif ($object instanceof ArrayAccess && isset($object[$propertyName])) {
                        return $object[$propertyName];