/**
  * Creates a new Client proxy, takes an url and an optional options object
  * that can also be an array
  * @param string $url
  * @param mixed $options
  */
 public function __construct($url, $options = null)
 {
     $this->url = $url;
     $this->options = HessianOptions::resolveOptions($options);
     $this->typemap = new HessianTypeMap($this->options->typeMap);
     $this->factory = new HessianFactory();
 }
 /**
  * Tries to resolve a HessianOptions object from either an object or an array.
  * Always return an options object
  * @param mixed $object variable to resolve
  * @return HessianOptions
  */
 public static function resolveOptions($object)
 {
     $options = new HessianOptions();
     if ($object == null) {
         return $options;
     }
     if ($object instanceof HessianOptions) {
         return $object;
     } elseif (is_array($object)) {
         $options->fromArray($object);
     } elseif (is_object($object)) {
         $arr = (array) $object;
         $options->fromArray($arr);
     }
     return $options;
 }
 /**
  * Creates a new HessianService instace to serve remote requests from Hessian clients
  * @param $serviceObject Class name or object instance
  * @param mixed $options array or HessianOptions object
  */
 function __construct($serviceObject, $options = null)
 {
     $this->options = HessianOptions::resolveOptions($options);
     if ($serviceObject) {
         $this->registerObject($serviceObject);
     }
     $this->options->detectVersion = true;
     $this->typemap = new HessianTypeMap($this->options->typeMap);
     $this->factory = new HessianFactory();
     // timezones
     HessianUtils::setTimeZone($this->options->timeZone);
 }