Skip to content

Commit 38f531e

Browse files
committed
Simplify usage by supporting new default loop
1 parent c3ce561 commit 38f531e

File tree

6 files changed

+23
-45
lines changed

6 files changed

+23
-45
lines changed

README.md

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ Once [installed](#install), you can use the following code to process an example
7171
user lists by sending a (RESTful) HTTP API request for each user record:
7272

7373
```php
74-
$loop = React\EventLoop\Factory::create();
75-
$browser = new React\Http\Browser($loop);
74+
$browser = new React\Http\Browser();
7675

7776
$concurrency = isset($argv[1]) ? $argv[1] : 3;
7877

@@ -99,8 +98,7 @@ $transformer = new Transformer($concurrency, function ($user) use ($browser) {
9998
// load a huge number of users to process from NDJSON file
10099
$input = new Clue\React\NDJson\Decoder(
101100
new React\Stream\ReadableResourceStream(
102-
fopen(__DIR__ . '/users.ndjson', 'r'),
103-
$loop
101+
fopen(__DIR__ . '/users.ndjson', 'r')
104102
),
105103
true
106104
);
@@ -117,7 +115,6 @@ $transformer->on('end', function () {
117115
});
118116
$transformer->on('error', 'printf');
119117

120-
$loop->run();
121118
```
122119

123120
See also the [examples](examples).
@@ -201,8 +198,7 @@ For demonstration purposes, the examples in this documentation use
201198
Its API can be used like this:
202199

203200
```php
204-
$loop = React\EventLoop\Factory::create();
205-
$browser = new React\Http\Browser($loop);
201+
$browser = new React\Http\Browser();
206202

207203
$promise = $browser->get($url);
208204
```
@@ -211,8 +207,7 @@ If you wrap this in a `Transformer` instance as given above, this code will look
211207
like this:
212208

213209
```php
214-
$loop = React\EventLoop\Factory::create();
215-
$browser = new React\Http\Browser($loop);
210+
$browser = new React\Http\Browser();
216211

217212
$transformer = new Transformer(10, function ($url) use ($browser) {
218213
return $browser->get($url);
@@ -287,8 +282,8 @@ The resulting code with timeouts applied look something like this:
287282
```php
288283
use React\Promise\Timer;
289284

290-
$transformer = new Transformer(10, function ($uri) use ($browser, $loop) {
291-
return Timer\timeout($browser->get($uri), 2.0, $loop);
285+
$transformer = new Transformer(10, function ($uri) use ($browser, null) {
286+
return Timer\timeout($browser->get($uri), 2.0, null);
292287
});
293288

294289
$transformer->write($uri);
@@ -326,8 +321,7 @@ The following examples use an async (non-blocking) transformation handler as
326321
given above:
327322

328323
```php
329-
$loop = React\EventLoop\Factory::create();
330-
$browser = new React\Http\Browser($loop);
324+
$browser = new React\Http\Browser();
331325

332326
$transformer = new Transformer(10, function ($url) use ($browser) {
333327
return $browser->get($url);
@@ -453,8 +447,7 @@ a promise which resolves with the total number of all successful jobs
453447
on success.
454448

455449
```php
456-
$loop = React\EventLoop\Factory::create();
457-
$browser = new React\Http\Browser($loop);
450+
$browser = new React\Http\Browser();
458451

459452
$promise = Transformer::all($input, 3, function ($data) use ($browser, $url) {
460453
return $browser->post($url, [], json_encode($data));
@@ -559,8 +552,7 @@ a promise which resolves with the first successful resolution value on
559552
success.
560553

561554
```php
562-
$loop = React\EventLoop\Factory::create();
563-
$browser = new React\Http\Browser($loop);
555+
$browser = new React\Http\Browser();
564556

565557
$promise = Transformer::any($input, 3, function ($data) use ($browser, $url) {
566558
return $browser->post($url, [], json_encode($data));

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
},
2121
"require": {
2222
"react/promise": "^2.5 || ^1.2.1",
23-
"react/stream": "^1.0 || ^0.7.7"
23+
"react/stream": "^1.2"
2424
},
2525
"require-dev": {
2626
"clue/ndjson-react": "^1.0",

examples/01-transform.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55

66
require __DIR__ . '/../vendor/autoload.php';
77

8-
$loop = React\EventLoop\Factory::create();
9-
$browser = new React\Http\Browser($loop);
8+
$browser = new React\Http\Browser();
109

1110
$concurrency = isset($argv[1]) ? $argv[1] : 3;
1211

@@ -35,8 +34,7 @@ function (ResponseInterface $response) use ($user) {
3534
// load a huge number of users to process from NDJSON file
3635
$input = new Clue\React\NDJson\Decoder(
3736
new React\Stream\ReadableResourceStream(
38-
fopen(__DIR__ . '/users.ndjson', 'r'),
39-
$loop
37+
fopen(__DIR__ . '/users.ndjson', 'r')
4038
),
4139
true
4240
);
@@ -53,4 +51,3 @@ function (ResponseInterface $response) use ($user) {
5351
});
5452
$transformer->on('error', 'printf');
5553

56-
$loop->run();

examples/02-transform-all.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@
55

66
require __DIR__ . '/../vendor/autoload.php';
77

8-
$loop = React\EventLoop\Factory::create();
9-
$browser = new React\Http\Browser($loop);
8+
$browser = new React\Http\Browser();
109

1110
$concurrency = isset($argv[1]) ? $argv[1] : 3;
1211
$url = isset($argv[2]) ? $argv[2] : 'http://httpbin.org/post';
1312

1413
// load a huge number of users to process from NDJSON file
1514
$input = new Clue\React\NDJson\Decoder(
1615
new React\Stream\ReadableResourceStream(
17-
fopen(__DIR__ . '/users.ndjson', 'r'),
18-
$loop
16+
fopen(__DIR__ . '/users.ndjson', 'r')
1917
),
2018
true
2119
);
@@ -49,4 +47,3 @@ function (Exception $e) {
4947
}
5048
);
5149

52-
$loop->run();

examples/03-transform-any.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@
55

66
require __DIR__ . '/../vendor/autoload.php';
77

8-
$loop = React\EventLoop\Factory::create();
9-
$browser = new React\Http\Browser($loop);
8+
$browser = new React\Http\Browser();
109

1110
$concurrency = isset($argv[1]) ? $argv[1] : 3;
1211
$url = isset($argv[2]) ? $argv[2] : 'http://httpbin.org/post';
1312

1413
// load a huge number of users to process from NDJSON file
1514
$input = new Clue\React\NDJson\Decoder(
1615
new React\Stream\ReadableResourceStream(
17-
fopen(__DIR__ . '/users.ndjson', 'r'),
18-
$loop
16+
fopen(__DIR__ . '/users.ndjson', 'r')
1917
),
2018
true
2119
);
@@ -53,4 +51,3 @@ function (Exception $e) {
5351
}
5452
);
5553

56-
$loop->run();

src/Transformer.php

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@
4545
* Its API can be used like this:
4646
*
4747
* ```php
48-
* $loop = React\EventLoop\Factory::create();
49-
* $browser = new React\Http\Browser($loop);
48+
* $browser = new React\Http\Browser();
5049
*
5150
* $promise = $browser->get($url);
5251
* ```
@@ -55,8 +54,7 @@
5554
* like this:
5655
*
5756
* ```php
58-
* $loop = React\EventLoop\Factory::create();
59-
* $browser = new React\Http\Browser($loop);
57+
* $browser = new React\Http\Browser();
6058
*
6159
* $transformer = new Transformer(10, function ($url) use ($browser) {
6260
* return $browser->get($url);
@@ -131,8 +129,8 @@
131129
* ```php
132130
* use React\Promise\Timer;
133131
*
134-
* $transformer = new Transformer(10, function ($uri) use ($browser, $loop) {
135-
* return Timer\timeout($browser->get($uri), 2.0, $loop);
132+
* $transformer = new Transformer(10, function ($uri) use ($browser, null) {
133+
* return Timer\timeout($browser->get($uri), 2.0, null);
136134
* });
137135
*
138136
* $transformer->write($uri);
@@ -170,8 +168,7 @@
170168
* given above:
171169
*
172170
* ```php
173-
* $loop = React\EventLoop\Factory::create();
174-
* $browser = new React\Http\Browser($loop);
171+
* $browser = new React\Http\Browser();
175172
*
176173
* $transformer = new Transformer(10, function ($url) use ($browser) {
177174
* return $browser->get($url);
@@ -310,8 +307,7 @@ final class Transformer extends EventEmitter implements DuplexStreamInterface
310307
* on success.
311308
*
312309
* ```php
313-
* $loop = React\EventLoop\Factory::create();
314-
* $browser = new React\Http\Browser($loop);
310+
* $browser = new React\Http\Browser();
315311
*
316312
* $promise = Transformer::all($input, 3, function ($data) use ($browser, $url) {
317313
* return $browser->post($url, [], json_encode($data));
@@ -463,8 +459,7 @@ public static function all(ReadableStreamInterface $input, $concurrency, $callba
463459
* success.
464460
*
465461
* ```php
466-
* $loop = React\EventLoop\Factory::create();
467-
* $browser = new React\Http\Browser($loop);
462+
* $browser = new React\Http\Browser();
468463
*
469464
* $promise = Transformer::any($input, 3, function ($data) use ($browser, $url) {
470465
* return $browser->post($url, [], json_encode($data));

0 commit comments

Comments
 (0)