Added the Search API Synonym module to deal specifically with licence and license...
[yaffs-website] / vendor / symfony / var-dumper / Caster / SplCaster.php
index c9d25feeb945bdcc902da29cd78cc92bfdea8c6d..0780c0a37148955e6bb50b3213dd74bc5e88bfd4 100644 (file)
@@ -29,30 +29,12 @@ class SplCaster
 
     public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, $isNested)
     {
-        $prefix = Caster::PREFIX_VIRTUAL;
-        $class = $stub->class;
-        $flags = $c->getFlags();
-
-        $b = array(
-            $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST),
-            $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS),
-            $prefix.'iteratorClass' => new ClassStub($c->getIteratorClass()),
-            $prefix.'storage' => $c->getArrayCopy(),
-        );
-
-        if ('ArrayObject' === $class) {
-            $a = $b;
-        } else {
-            if (!($flags & \ArrayObject::STD_PROP_LIST)) {
-                $c->setFlags(\ArrayObject::STD_PROP_LIST);
-                $a = Caster::castObject($c, $class);
-                $c->setFlags($flags);
-            }
-
-            $a += $b;
-        }
+        return self::castSplArray($c, $a, $stub, $isNested);
+    }
 
-        return $a;
+    public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub, $isNested)
+    {
+        return self::castSplArray($c, $a, $stub, $isNested);
     }
 
     public static function castHeap(\Iterator $c, array $a, Stub $stub, $isNested)
@@ -184,10 +166,11 @@ class SplCaster
         $storage = array();
         unset($a[Caster::PREFIX_DYNAMIC."\0gcdata"]); // Don't hit https://bugs.php.net/65967
 
-        foreach (clone $c as $obj) {
-            $storage[spl_object_hash($obj)] = array(
+        $clone = clone $c;
+        foreach ($clone as $obj) {
+            $storage[] = array(
                 'object' => $obj,
-                'info' => $c->getInfo(),
+                'info' => $clone->getInfo(),
              );
         }
 
@@ -204,4 +187,27 @@ class SplCaster
 
         return $a;
     }
+
+    private static function castSplArray($c, array $a, Stub $stub, $isNested)
+    {
+        $prefix = Caster::PREFIX_VIRTUAL;
+        $class = $stub->class;
+        $flags = $c->getFlags();
+
+        if (!($flags & \ArrayObject::STD_PROP_LIST)) {
+            $c->setFlags(\ArrayObject::STD_PROP_LIST);
+            $a = Caster::castObject($c, $class);
+            $c->setFlags($flags);
+        }
+        $a += array(
+            $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST),
+            $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS),
+        );
+        if ($c instanceof \ArrayObject) {
+            $a[$prefix.'iteratorClass'] = new ClassStub($c->getIteratorClass());
+        }
+        $a[$prefix.'storage'] = $c->getArrayCopy();
+
+        return $a;
+    }
 }