# Migration von vorhergehenden Versionen

Wärend die externe API von `Zend_Http_Client` durch den kompletten 1.x Baum vom Zend Framework konsistent geblieben ist, wurden einige Änderungen in der internen Struktur von `Zend_Http_Client` und den abhängigen Klassen durchgeführt.

Diese Änderungen sollten keinen Effekt bei Code haben der `Zend_Http_Client` verwendet - kann aber Effekte bei PHP Klassen zeigen welche diese Erweitern oder Überladen. Wenn die eigene Anwendung `Zend_Http_Client` erweitert, ist es stark zu empfehlen die folgenden Änderungen anzusehen bevor der Zend Framework hochgerüstet wird.

## Migration von 1.8 oder älter zu 1.9 oder neuer

### Änderungen in der internen Speicherung der Information von hochgeladenen Dateien

In Version 1.9 vom Zend Framework gibt es eine Ändernug wie `Zend_Http_Client` Informationen über hochgeladenen Dateien intern speichert, bei denen die `Zend_Http_Client::setFileUpload()` Methode verwendet wird.

Diese Änderung wurde durchgeführt um es zu erlauben mehrere Dateien mit dem gleichen Formularnamen, als Array von Dateien, hochzuladen. Weitere Informationen über dieses Problem können in diesem Fehlerreport gefunden werden.

#### Interne Speicherung der Informationen von hochgeladenen Dateien

    // Zwei Dateien mit dem gleichen Namen des Formularelements als Array hochladen
    $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');

    // In Zend Framework 1.8 oder älter, ist der Wert der geschützten
    // Variable $client->files:
    // $client->files = array(
    //     'userfile[]' => array('file2.txt',
                                 'application/octet-stream',
                                 'some other data')
    // );

    // In Zend Framework 1.9 oder neuer, ist der Wert von $client->files:
    // $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'
    //     )
    // );

Wie man sieht gestattet diese Änderung die Verwendung des gleichen Namens für das Formularelement mit mehr als einer Datei - trotzdem führt dies zu einer subtilen Änderung der Rückwärtskompatibilität und sollte erwähnt werden.

### Zend_Http_Client::_getParametersRecursive() sollte nicht mehr eingesetzt werden

Beginnend mit Version 1.9, wird die geschützte Methode `_getParametersRecursive()` nicht mehr von `Zend_Http_Client` verwendet und ist abgelehnt (deprecated). Ihre Verwendung führt zu einer E_NOTICE Nachricht die von PHP kommt.

Wenn man `Zend_Http_Client` erweitert und diese Methode aufrufr, sollte man sehen das man stattdessen die statische Methode `Zend_Http_Client::_flattenParametersArray()` verwendet.

Nochmals, da `_getParametersRecursive` eine geschützte Methode ist, sind nur Benutzer betroffen die `Zend_Http_Client` erweitert haben.