# Migrer depuis les versions précédentes

Alors que l'API externe de `Zend_Http_Client` n'a pas changé sur la branche 1.x de Zend Framework, des changements ont été opérés dans la structure interne de `Zend_Http_Client`.

Ces changements ne devraient pas avoir de conséquence si vous utilisiez directement `Zend_Http_Client`, mais des boulversements peuvent apparaitre dans le cas où vous dériviez l'objet par surcharge. Voyez ainsi ce chapitre.

## Migrer depuis 1.8 ou avant, vers 1.9 ou après

### Changement dans le stockage interne des fichiers d'upload

Dans la version 1.9 de Zend Framework, il y a eu un changement dans la manière dont `Zend_Http_Client` stocke en interne les informations concernant les fichiers ayant été uploadés, affectés grâce à `Zend_Http_Client::setFileUpload()`

Ce changement a été mis en place de manière à permettre l'envoi de plusieurs fichiers avec le même nom dans le formulaire, en tant que tableau de fichiers. Plus d'informations à ce sujet peuvent être trouvées dans ce rapport de bug.

#### Stockage interne des informations sur les fichiers uploadés

    // Uploade 2 fichiers avec le même nom d'élément de formulaire, en tant que tableau
    $client = new Zend_Http_Client();
    $client->setFileUpload('file1.txt', 'userfile[]', 'some raw data', 'text/plain');
    $client->setFileUpload('file2.txt', 'userfile[]', 'some other data', 'application/octet-stream');

    // Dans Zend Framework <=1.8, la valeur de l'attribut protégé $client->files est:
    // $client->files = array(
    //     'userfile[]' => array('file2.txt', 'application/octet-stream', 'some other data')
    // );

    // Dans Zend Framework >=1.9, la valeur de $client->files est:
    // $client->files = array(
    //     array(
    //         'formname' => 'userfile[]',
    //         'filename' => 'file1.txt,
    //         'ctype'    => 'text/plain',
    //         'data'     => 'some raw data'
    //     ),
    //     array(
    //         'formname' => 'userfile[]',
    //         'filename' => 'file2.txt',
    //         'formname' => 'application/octet-stream',
    //         'formname' => 'some other data'
    //     )
    // );

Comme vous le voyez, ce changement permet l'utilisation du même élément de formulaire avec plusieurs fichiers. Cependant ceci introduit un changement subtile dans l'API interne, il est donc signalé ici.