Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.0.1
-
Fix Version/s: 1.0.4
-
Component/s: Zend_Rest_Client
-
Labels:None
Description
$rest1 = new Zend_Rest_Client('http://rest.server.com'); $rest1->test('test'); $rest->get(); // -> http://rest.server.com?arg1=test&test=test&rest=1 $rest2 = clone $rest1; $rest2->test2('test2'); $rest2->get(); // -> http://rest.server.com?arg1=test2&test=test&test2=test2&rest=1 $rest3 = new Zend_Rest_Client('http://rest.server.com'); $rest3->test3('test3'); $rest3->get(); // -> http://rest.server.com?arg1=test3&test=test&test2=test2&text3=test3&rest=1
Zend_Rest_Client use a static Zend_Http_Client object but this only add all given params
// Zend_Rest_Client (Line 130 - 136) final public function restGet($path, array $query = null) { $this->_prepareRest($path); $client = self::getHttpClient(); $client->setParameterGet($query); return $client->request('GET'); } // Zend_Rest_Client (Line 100 - 120) final private function _prepareRest($path) { // Get the URI object and configure it if (!$this->_uri instanceof Zend_Uri_Http) { require_once 'Zend/Rest/Client/Exception.php'; throw new Zend_Rest_Client_Exception('URI object must be set before performing call'); } $uri = $this->_uri->getUri(); if ($path[0] != '/' && $uri[strlen($uri)-1] != '/') { $path = '/' . $path; } $this->_uri->setPath($path); /** * Get the HTTP client and configure it for the endpoint URI. Do this each time * because the Zend_Http_Client instance is shared among all Zend_Service_Abstract subclasses. */ self::getHttpClient()->resetParameters(); // <- This line is missing self::getHttpClient()->setUri($this->_uri); } // Zend_Http_Client (Line 377 - 387) public function setParameterGet($name, $value = null) { if (is_array($name)) { foreach ($name as $k => $v) $this->_setParameter('GET', $k, $v); } else { $this->_setParameter('GET', $name, $value); } return $this; } // Zend_Http_Client (Line 415 - 433) protected function _setParameter($type, $name, $value) { $parray = array(); $type = strtolower($type); switch ($type) { case 'get': $parray = &$this->paramsGet; break; case 'post': $parray = &$this->paramsPost; break; } if ($value === null) { if (isset($parray[$name])) unset($parray[$name]); } else { $parray[$name] = $value; } }
Assigned to Davey