Пример #1
0
 /**
  * @todo Is the reference still needed? PHP4 needed it for objects, but PHP5 always
  * passes objects by reference. And PHP5 uses a copy-on-write approach, so that all
  * values are passed as "reference", in case no changes take place.
  *
  * @todo no type markers ("\6", for example) in this method!
  */
 protected function writeAmf3Data(&$d)
 {
     if (is_int($d)) {
         //int
         $this->writeAmf3Number($d);
         return;
     } elseif (is_float($d)) {
         //double
         $this->outBuffer .= "";
         $this->writeDouble($d);
         return;
     } elseif (is_string($d)) {
         // string
         $this->outBuffer .= "";
         $this->writeAmf3String($d);
         return;
     } elseif (is_bool($d)) {
         // boolean
         $this->writeAmf3Bool($d);
         return;
     } elseif (is_null($d)) {
         // null
         $this->writeAmf3Null();
         return;
     } elseif (Amfphp_Core_Amf_Util::is_undefined($d)) {
         // undefined
         $this->writeAmf3Undefined();
         return;
     } elseif (Amfphp_Core_Amf_Util::is_date($d)) {
         // date
         $this->writeAmf3Date($d);
         return;
     } elseif (is_array($d)) {
         // array
         $this->writeAmf3Array($d);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_byteArray($d)) {
         //byte array
         $this->writeAmf3ByteArray($d->data);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_Xml($d)) {
         // Xml
         $this->writeAmf3Xml($d);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_XmlDocument($d)) {
         // XmlDoc
         $this->writeAmf3XmlDocument($d);
         return;
     } elseif (is_object($d)) {
         $this->writeAmf3Object($d);
         return;
     }
     throw new Amfphp_Core_Exception("couldn't write object " . print_r($d, false));
 }
Пример #2
0
 /**
  * @todo Is the reference still needed? PHP4 needed it for objects, but PHP5 always
  * passes objects by reference. And PHP5 uses a copy-on-write approach, so that all
  * values are passed as 'reference', in case no changes take place.
  *
  * @todo no type markers ("\6', for example) in this method!
  */
 protected function writeAmf3Data($d)
 {
     if (is_int($d)) {
         //int
         $this->writeAmf3Number($d);
         return;
     } elseif (is_float($d)) {
         //double
         $this->outBuffer .= "";
         $this->writeDouble($d);
         return;
     } elseif (is_string($d)) {
         // string
         $this->outBuffer .= "";
         $this->writeAmf3String($d);
         return;
     } elseif (is_bool($d)) {
         // boolean
         $this->writeAmf3Bool($d);
         return;
     } elseif (is_null($d)) {
         // null
         $this->writeAmf3Null();
         return;
     } elseif (Amfphp_Core_Amf_Util::is_undefined($d)) {
         // undefined
         $this->writeAmf3Undefined();
         return;
     } elseif (Amfphp_Core_Amf_Util::is_date($d)) {
         // date
         $this->writeAmf3Date($d);
         return;
     } elseif (is_array($d)) {
         // array
         $this->writeAmf3Array($d);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_byteArray($d)) {
         //byte array
         $this->writeAmf3ByteArray($d->data);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_Xml($d)) {
         // Xml
         $this->writeAmf3Xml($d);
         return;
     } elseif (Amfphp_Core_Amf_Util::is_XmlDocument($d)) {
         // XmlDoc
         $this->writeAmf3XmlDocument($d);
         return;
     } elseif (is_object($d)) {
         $explicitTypeField = Amfphp_Core_Amf_Constants::FIELD_EXPLICIT_TYPE;
         if (isset($d->{$explicitTypeField})) {
             $this->writeAmf3TypedObject($d);
             return;
         } else {
             $this->writeAmf3AnonymousObject($d);
             return;
         }
     }
     throw new Amfphp_Core_Exception("couldn't write object " . print_r($d, false));
 }