onPHP/onphp-framework — pull request #112 by AlexeyDsov (2012-06-18 09:45:20+00:00)
Title: CurlHttpClient: отправка файлов и массивы любой вложенности

На работе поковыряли немножко CurlHttpClient и захотелось еще дополнительно дома его доковырять, что бы он умел делать все что нужно:

1) отправлять массивы любой вложенности:

```php
setPost(array('a' => array('b' => array('c' => array(1, 2, 3))));
CurlHttpClient::create()->send($request);
```

В текущей версии вложенность для get и post ограничена двумерным массивом, однако более более глубокие массивы, возможно, кто-то получал заранее создавая массив вроде ```array('a[b][c][0]' => '123')```. Теперь такие будет делать нельзя, т.к. теперь ключи массива прогоняются через urlencode так же как и значения.

2) В случае HttpMethod::post предлагаю дополнять url параметрами из HttpRequest::getGet, так же как в случае HttpMethod::get

3) Сделана загрузку файлов, их нужно задавать так:
```php
setFiles(array(
'file1' => '/tmp/file1.txt',
'pngFile' => '/tmp/someimage.pmg'
));
```

4) Добавлена возможность отправлять кастомное post тело (например, в некоторых случаях нужно отправлять post'ом xml файл):
```php
setBody(
'

');
```

5) Т.к. изменена логика формирования post и get (добавлен urlencode для названия параметров), то реализовано возможность использовать старый алгоритм. Если нужно во всем проекте использовать старый алогоритм, то в конфиге объявить временную константу ONPHP_CURL_CLIENT_OLD_TO_STRING в true:
```php
setOldUrlConstructor(true);
```