فهرست منبع

Fixed the unescaping of parameters to handle arrays

Christophe Coevoet 13 سال پیش
والد
کامیت
8e13095e5c
1فایلهای تغییر یافته به همراه19 افزوده شده و 1 حذف شده
  1. 19 1
      src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php

+ 19 - 1
src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php

@@ -139,7 +139,7 @@ class ParameterBag implements ParameterBagInterface
         foreach ($this->parameters as $key => $value) {
             try {
                 $value = $this->resolveValue($value);
-                $parameters[$key] = is_string($value) ? str_replace('%%', '%', $value) : $value;
+                $parameters[$key] = $this->unescapeString($value);
             } catch (ParameterNotFoundException $e) {
                 $e->setSourceKey($key);
 
@@ -235,4 +235,22 @@ class ParameterBag implements ParameterBagInterface
     {
         return $this->resolved;
     }
+
+    private function unescapeString($value)
+    {
+        if (is_string($value)) {
+            return str_replace('%%', '%', $value);
+        }
+
+        if (is_array($value)) {
+            $result = array();
+            foreach ($value as $k => $v) {
+                $result[$k] = $this->unescapeString($v);
+            }
+
+            return $result;
+        }
+
+        return $value;
+    }
 }