}
ZEND_BEGIN_ARG_INFO_EX(ai_HttpClient_setDebug, 0, 0, 1)
- ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1)
+ /* using IS_CALLABLE type hint would create a forwards compatibility break */
+ ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();
static PHP_METHOD(HttpClient, setDebug)
{
ctx->closure.internal_function.handler = php_http_client_curl_user_handler;
MAKE_STD_ZVAL(zclosure);
+#if PHP_VERSION_ID >= 50400
zend_create_closure(zclosure, &ctx->closure, NULL, NULL TSRMLS_CC);
+#else
+ zend_create_closure(zclosure, &ctx->closure TSRMLS_CC);
+#endif
args[0] = &zclosure;
php_http_object_method_init(&init, ctx->user, ZEND_STRL("init") TSRMLS_CC);
zend_class_entry *php_http_client_curl_user_class_entry;
ZEND_BEGIN_ARG_INFO_EX(ai_init, 0, 0, 1)
- ZEND_ARG_TYPE_INFO(0, run, IS_CALLABLE, 0)
+ /* using IS_CALLABLE type hint would create a forwards compatibility break */
+ ZEND_ARG_INFO(0, run)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(ai_timer, 0, 0, 1)
#if PHP_VERSION_ID >= 70000
include "helper/server.inc";
server("upload.inc", function($port) {
- $r = new \http\Client\Request("PUT", "http://localhost:$port/", [],
- (new \http\Message\Body)->append("foo")
- );
+ $b = new \http\Message\Body;
+ $b->append("foo");
+ $r = new \http\Client\Request("PUT", "http://localhost:$port/", array(), $b);
$c = new \http\Client;
- $c->setOptions(["expect_100_timeout" => 0]);
+ $c->setOptions(array("expect_100_timeout" => 0));
$c->enqueue($r)->send();
var_dump($c->getResponse($r)->getInfo());
Test
%r(exception ')?%rhttp\Exception\BadMessageException%r(' with message '|: )%rhttp\Message::__construct(): Could not parse HTTP protocol version 'HTTP/%s.0'%r'?%r in %sbug71719.php:5
Stack trace:
-#0 %sbug71719.php(5): http\Message->__construct('\x80\xACTd 5 HTTP/1.1...', false)
+#0 %sbug71719.php(5): http\Message->__construct('%r(\?\?|\\x80\\xAC)%rTd 5 HTTP/1.1...', false)
#1 {main}
===DONE===
});
-(new http\Client("curl", "test"))->configure(["share_cookies" => false]);
-$request->setOptions(["cookiestore" => null]);
+$c = new http\Client("curl", "test");
+$c->configure(array("share_cookies" => false));
+$c = null;
+$request->setOptions(array("cookiestore" => null));
server("cookie.inc", function($port) use($request, $tmpfile) {
$request->setOptions(array("port" => $port));
server("cookie.inc", function($port) {
$client = new http\Client(null, "cookies");
- $client->configure(["pipelining" => false]);
+ $client->configure(array("pipelining" => false));
$request = new http\Client\Request("GET", "http://localhost:$port?r1");
$client->enqueue($request);
$client->send();
{
private $client;
private $run;
- private $fds = [
- "R" => [],
- "W" => []
- ];
- private $R = [];
- private $W = [];
+ private $fds = array(
+ "R" => array(),
+ "W" => array()
+ );
+ private $R = array();
+ private $W = array();
private $timeout = 1000;
function __construct(http\Client $client) {
$this->client = $client;
}
- function init(callable $run) {
+ function init($run) {
$this->run = $run;
}
server("proxy.inc", function($port) {
$client = new http\Client;
- $client->configure([
+ $client->configure(array(
"use_eventloop" => new UserHandler($client)
- ]);
+ ));
$client->enqueue(new http\Client\Request("GET", "http://localhost:$port/"), function($r) {
var_dump($r->getResponseCode());
});
}
server("proxy.inc", function($port) {
$client = new http\Client;
- $client->configure([
+ $client->configure(array(
"use_eventloop" => true,
- ]);
+ ));
$client->attach(new test);
$client->enqueue(new http\Client\Request("GET", "http://localhost:$port/"), function($r) {
var_dump($r->getResponseCode());
foreach ($urls as $url) {
try {
- (new http\Client\Request)->setRequestUrl($url);
+ $c = new http\Client\Request;
+ $c->setRequestUrl($url);
printf("OK: %s\n", $url);
} catch (Exception $e) {
printf("%s\n", $e->getMessage());
<?php
echo "Test\n";
-$urls = [
+$urls = array(
"",
"? = ="
-];
+);
$url0=new http\Url($urls[0]);
$url1=$url0->mod($urls[1]);
exception 'http\Exception\RuntimeException' with message 'http\Client::dequeue(): Could not dequeue request while executing callbacks' in %sgh-issue50.php:9
Stack trace:
#0 %sgh-issue50.php(9): http\Client->dequeue(Object(http\Client\Request))
-#1 [internal function]: {closure}(Object(http\Client), Object(http\Client\Request), 18, 'GET / HTTP/1.1\r...')
+#1 [internal function]: {closure}(Object(http\Client), Object(http\Client\Request), 18, 'GET / HTTP/1.1%s...')
#2 %sgh-issue50.php(14): http\Client->send()
#3 {main}
===DONE===
echo "Test\n";
-echo (new http\Url("?__utma=1152894289.1017686999.9107388726.1439222726.1494721726.1&__utmb=115739289.1.10.1437388726&__utmc=115883619&__utmx=-&__utmz=115111289.14310476.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)&__utmv=-&__utmk=112678937"))->query;
+$url = new http\Url("?__utma=1152894289.1017686999.9107388726.1439222726.1494721726.1&__utmb=115739289.1.10.1437388726&__utmc=115883619&__utmx=-&__utmz=115111289.14310476.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)&__utmv=-&__utmk=112678937");
+echo $url->query;
echo "\n";
-echo (new http\Url("?id={\$id}"))->query;
+$url = new http\Url("?id={\$id}");
+echo $url->query;
echo "\n";
?>
-Subproject commit 23c2876aaa0808bcfedc1c5c30da6e8234341a13
+Subproject commit 5e781dcbd19aac1bc3a31b3187fd42011e70dd3d