Browse Source

[[ZF-5989]] To avoid circular dependencies, we include required subtypes on runtime

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17756 44c647ce-9c0f-0410-b52a-842ac1e357ba
lars 16 years ago
parent
commit
3ba351489d
1 changed files with 15 additions and 35 deletions
  1. 15 35
      library/Zend/XmlRpc/Value.php

+ 15 - 35
library/Zend/XmlRpc/Value.php

@@ -20,39 +20,6 @@
  * @version    $Id$
  */
 
-/** Zend_XmlRpc_Value_Scalar */
-require_once 'Zend/XmlRpc/Value/Scalar.php';
-
-/** Zend_XmlRpc_Value_Base64 */
-require_once 'Zend/XmlRpc/Value/Base64.php';
-
-/** Zend_XmlRpc_Value_Boolean */
-require_once 'Zend/XmlRpc/Value/Boolean.php';
-
-/** Zend_XmlRpc_Value_DateTime */
-require_once 'Zend/XmlRpc/Value/DateTime.php';
-
-/** Zend_XmlRpc_Value_Double */
-require_once 'Zend/XmlRpc/Value/Double.php';
-
-/** Zend_XmlRpc_Value_Integer */
-require_once 'Zend/XmlRpc/Value/Integer.php';
-
-/** Zend_XmlRpc_Value_String */
-require_once 'Zend/XmlRpc/Value/String.php';
-
-/** Zend_XmlRpc_Value_Nil */
-require_once 'Zend/XmlRpc/Value/Nil.php';
-
-/** Zend_XmlRpc_Value_Collection */
-require_once 'Zend/XmlRpc/Value/Collection.php';
-
-/** Zend_XmlRpc_Value_Array */
-require_once 'Zend/XmlRpc/Value/Array.php';
-
-/** Zend_XmlRpc_Value_Struct */
-require_once 'Zend/XmlRpc/Value/Struct.php';
-
 /**
  * Represent a native XML-RPC value entity, used as parameters for the methods
  * called by the Zend_XmlRpc_Client object and as the return value for those calls.
@@ -250,31 +217,38 @@ abstract class Zend_XmlRpc_Value
                 // Break intentionally omitted
             case 'array':
                 // Default native type for a PHP array (a simple numeric array) is 'array'
+                require_once 'Zend/XmlRpc/Value/Array.php';
                 $obj = 'Zend_XmlRpc_Value_Array';
 
                 // Determine if this is an associative array
                 if (!empty($value) && is_array($value) && (array_keys($value) !== range(0, count($value) - 1))) {
+                    require_once 'Zend/XmlRpc/Value/Struct.php';
                     $obj = 'Zend_XmlRpc_Value_Struct';
                 }
                 return new $obj($value);
 
             case 'integer':
+                require_once 'Zend/XmlRpc/Value/Integer.php';
                 return new Zend_XmlRpc_Value_Integer($value);
 
             case 'double':
+                require_once 'Zend/XmlRpc/Value/Double.php';
                 return new Zend_XmlRpc_Value_Double($value);
 
             case 'boolean':
+                require_once 'Zend/XmlRpc/Value/Boolean.php';
                 return new Zend_XmlRpc_Value_Boolean($value);
 
             case 'NULL':
             case 'null':
+                require_once 'Zend/XmlRpc/Value/Nil.php';
                 return new Zend_XmlRpc_Value_Nil();
 
             case 'string':
                 // Fall through to the next case
             default:
                 // If type isn't identified (or identified as string), it treated as string
+                require_once 'Zend/XmlRpc/Value/String.php';
                 return new Zend_XmlRpc_Value_String($value);
         }
     }
@@ -312,21 +286,27 @@ abstract class Zend_XmlRpc_Value
             case self::XMLRPC_TYPE_I4:
                 // Fall through to the next case
             case self::XMLRPC_TYPE_INTEGER:
+                require_once 'Zend/XmlRpc/Value/Integer.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Integer($value);
                 break;
             case self::XMLRPC_TYPE_DOUBLE:
+                require_once 'Zend/XmlRpc/Value/Double.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Double($value);
                 break;
             case self::XMLRPC_TYPE_BOOLEAN:
+                require_once 'Zend/XmlRpc/Value/Boolean.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Boolean($value);
                 break;
             case self::XMLRPC_TYPE_STRING:
+                require_once 'Zend/XmlRpc/Value/String.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_String($value);
                 break;
             case self::XMLRPC_TYPE_DATETIME:  // The value should already be in a iso8601 format
+                require_once 'Zend/XmlRpc/Value/DateTime.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_DateTime($value);
                 break;
             case self::XMLRPC_TYPE_BASE64:    // The value should already be base64 encoded
+                require_once 'Zend/XmlRpc/Value/Base64.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Base64($value ,true);
                 break;
             case self::XMLRPC_TYPE_NIL:    // The value should always be NULL
@@ -359,6 +339,7 @@ abstract class Zend_XmlRpc_Value
                 foreach ($data->value as $element) {
                     $values[] = self::_xmlStringToNativeXmlRpc($element);
                 }
+                require_once 'Zend/XmlRpc/Value/Array.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Array($values);
                 break;
             case self::XMLRPC_TYPE_STRUCT:
@@ -379,6 +360,7 @@ abstract class Zend_XmlRpc_Value
                     }
                     $values[(string)$member->name] = self::_xmlStringToNativeXmlRpc($member->value);
                 }
+                require_once 'Zend/XmlRpc/Value/Struct.php';
                 $xmlrpc_val = new Zend_XmlRpc_Value_Struct($values);
                 break;
             default:
@@ -420,5 +402,3 @@ abstract class Zend_XmlRpc_Value
         return html_entity_decode($str, ENT_QUOTES, 'UTF-8');
     }
 }
-
-