Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Voilà je veux convertir le code suivant en quelque chose de plus zend compliant :
Code d'origine :
[lang=php]protected function executeRequest($url, $curl_params = array()) { $defaultParams = array( CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLINFO_HEADER_OUT => TRUE, CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_ENCODING=> 'UTF-8', CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ) ); $session = curl_init($url); $curl_options = array(); foreach ($defaultParams as $defkey => $defval) { if (isset($curl_params[$defkey])) $curl_options[$defkey] = $curl_params[$defkey]; else $curl_options[$defkey] = $defaultParams[$defkey]; } foreach ($curl_params as $defkey => $defval) if (!isset($curl_options[$defkey])) $curl_options[$defkey] = $curl_params[$defkey]; curl_setopt_array($session, $curl_options); $response = curl_exec($session); $index = strpos($response, "\r\n\r\n"); if ($index === false && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD') throw new PrestaShopWebserviceException('Mauvaise requête.'); $header = substr($response, 0, $index); $body = substr($response, $index + 4); $headerArrayTmp = explode("\n", $header); $headerArray = array(); foreach ($headerArrayTmp as &$headerItem) { $tmp = explode(':', $headerItem); $tmp = array_map('trim', $tmp); if (count($tmp) == 2) $headerArray[$tmp[0]] = $tmp[1]; } if (array_key_exists('PSWS-Version', $headerArray)) { if ( version_compare(PrestaShopWebservice::psCompatibleVersionsMin, $headerArray['PSWS-Version']) == 1 || version_compare(PrestaShopWebservice::psCompatibleVersionsMax, $headerArray['PSWS-Version']) == -1 ) throw new \Exception('Librairie incompatible avec cette version de Prestashop.'); } if ($this->debug) { $this->printDebug('HTTP REQUEST HEADER', curl_getinfo($session, CURLINFO_HEADER_OUT)); $this->printDebug('HTTP RESPONSE HEADER', $header); } $status_code = curl_getinfo($session, CURLINFO_HTTP_CODE); if ($status_code === 0) throw new PrestaShopWebserviceException('CURL Error: '.curl_error($session)); curl_close($session); if ($this->debug) { if ($curl_params[CURLOPT_CUSTOMREQUEST] == 'PUT' || $curl_params[CURLOPT_CUSTOMREQUEST] == 'POST') $this->printDebug('XML SENT', $curl_params[CURLOPT_POSTFIELDS]); if ($curl_params[CURLOPT_CUSTOMREQUEST] != 'DELETE' && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD') $this->printDebug('RETURN HTTP BODY', $body); } return array('status_code' => $status_code, 'response' => $body, 'header' => $header); }[/lang]
Voici le code que j'ai proposé sauf qu'à l'ajout j'ai une bonne erreur 500, et pas au listing qui marche nickel :
[lang=php]protected function executeRequest($url, $curl_params = array()) { //var_dump($curl_params); $request = new \Zend\Http\Request(); $request->setUri($url); $request->setMethod($curl_params['10036']); $client = new \Zend\Http\Client(); $adapter = new \Zend\Http\Client\Adapter\Curl(); $client->setAdapter($adapter); if($curl_params['10036'] == "GET"){ $adapter->setOptions(array( 'curloptions' => array( CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLINFO_HEADER_OUT => TRUE, CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_ENCODING=> 'UTF-8', CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ) ) )); } elseif($curl_params['10036'] == "POST"){ $adapter->setOptions(array( 'curloptions' => array( CURLOPT_HEADER => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLINFO_HEADER_OUT => TRUE, CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_ENCODING=> 'UTF-8', CURLOPT_USERPWD => $this->key.':', CURLOPT_HTTPHEADER => array( 'Expect:' ), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => 'xml='.$curl_params['10015'] ) )); } $response = $client->dispatch($request); //var_dump($response); $index = strpos($response, "\r\n\r\n"); if ($index === false && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD') throw new PrestaShopWebserviceException('Mauvaise requête.'); $header = substr($response, 0, $index); $body = substr($response, $index + 4); $headerArrayTmp = explode("\n", $header); $headerArray = array(); foreach ($headerArrayTmp as &$headerItem) { $tmp = explode(':', $headerItem); $tmp = array_map('trim', $tmp); if (count($tmp) == 2) $headerArray[$tmp[0]] = $tmp[1]; } if (array_key_exists('PSWS-Version', $headerArray)) { if ( version_compare(PrestaShopWebservice::psCompatibleVersionsMin, $headerArray['PSWS-Version']) == 1 || version_compare(PrestaShopWebservice::psCompatibleVersionsMax, $headerArray['PSWS-Version']) == -1 ) throw new \Exception('Librairie incompatible avec cette version de Prestashop.'); } if ($this->debug) { $this->printDebug('HTTP RESPONSE HEADER', $header); } $status_code = $response->getStatusCode(); if ($status_code === 0) throw new PrestaShopWebserviceException('CURL Error ! '); if ($this->debug) { if ($curl_params[CURLOPT_CUSTOMREQUEST] == 'PUT' || $curl_params[CURLOPT_CUSTOMREQUEST] == 'POST') $this->printDebug('XML SENT', $curl_params[CURLOPT_POSTFIELDS]); if ($curl_params[CURLOPT_CUSTOMREQUEST] != 'DELETE' && $curl_params[CURLOPT_CUSTOMREQUEST] != 'HEAD') $this->printDebug('RETURN HTTP BODY', $body); } return array('status_code' => $status_code, 'response' => $body, 'header' => $header); }[/lang]
Merci pour vos éclaircissements ...
Hors ligne
Pourrais-tu être plus précis parce que balancer du code comme ça sans savoir à quoi ça sert, où tu l'a mis etc ... On peut pas beaucoup t'aider vu qu'on connait pas prestashop
Hors ligne
amelie a écrit:
Bonjour,
Les femmes également font du Zend ...
Cordialement.
Salut, eu je ne vois pas pourquoi tu dis ça Oo ? En quoi j'ai dit que les femmes ne faisait pas du Zend ?
Ce que je veux dire c'est qu'on a pas le contexte, on ne sait pas pourquoi tu fais "zendifier" le code, dans quel but ? Dans quel endroit de ton application ZF2 tu l'utilises (contrôleur, service etc ...) ? Ce que ce code fait parce que je ne connais pas prestashop et je ne pense pas que nous soyons nombreux à le connaitre car c'est avant tout un forum de support ZF2. Donc on est pas contre t'apporter de l'aide mais il nous faut un minimum d'informations pour pouvoir le faire. Et ça n'a rien à voir avec le fait que ça soit une femme, un homme, un chien, un singe ou je ne sais quoi d'autre qui développe . Personnellement je m'en fou mais imagine la situation inverse je te balance des lignes de code d'une application que tu ne connais pas et je te demande de me dire comment corriger mes problèmes sans tout t'expliquer. Tu ne vas pas pouvoir m'aider non plus.
Hors ligne
La communauté z-f France c'est aussi parfois de grands moments de détente et de décompression entre deux lignes de codes
@Amélie : si tu veux zendifier ta boutique, pourquoi ne pas carrément utiliser magento ?
@Amélie : Tu es célibataire ?
Hors ligne
amelie a écrit:
Bonjour,
Les femmes également font du Zend ...
Cordialement.
J'avoue que je n'ai pas compris non plus ? oO
Hors ligne
Bouks a écrit:
@Amélie : si tu veux zendifier ta boutique, pourquoi ne pas carrément utiliser magento ?
Je pensais à ça aussi mais je crois pas que ça soit migré sur du ZF2 aussi.
Bouks a écrit:
@Amélie : Tu es célibataire ?
Peu probable il y a tellement peu de femmes dans l'informatique que tout le monde saute dessus
Hors ligne
alien7 a écrit:
J'avoue que je n'ai pas compris non plus ? oO
Hors ligne
Orkin a écrit:
Je pensais à ça aussi mais je crois pas que ça soit migré sur du ZF2 aussi.
Ils attendent que tu t'inscrives comme contributeur pour commencer la migration.
Hors ligne
Bouks a écrit:
Ils attendent que tu t'inscrives comme contributeur pour commencer la migration.
J'aimerais bien mais malheureusement je n'ai pas le temps , ça me permettrait d'être aussi plus pertinent sur ce forum !
Hors ligne
Désolée d'avoir été brute de pomme, quand j'ai lu "peux-tu être plus précis" ça m'a rendue irritable. Beaucoup de forums à fort pourcentages masculin stigmatisent les femmes (j'en ai fait l'expérience sur un forum de photo), et ça me rend à fleur de peau ...
Pour le moment je laisse le fichier tel que. Mais merci d'avoir répondu
Hors ligne
C'est pas parce qu'on veut en savoir plus pour mieux t'aider qu'on te stigmatise
Hors ligne