Skip to content

Commit a52b8b3

Browse files
committed
check for both Laminas and Zend classes in factories
1 parent 49fd7fd commit a52b8b3

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

src/MessageFactory/DiactorosMessageFactory.php

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
use Http\Message\MessageFactory;
66
use Http\Message\StreamFactory\DiactorosStreamFactory;
7-
use Laminas\Diactoros\Request;
8-
use Laminas\Diactoros\Response;
7+
use Laminas\Diactoros\Request as LaminasRequest;
8+
use Laminas\Diactoros\Response as LaminasResponse;
9+
use Laminas\Diactoros\Request as ZendRequest;
10+
use Laminas\Diactoros\Response as ZendResponse;
911

1012
/**
1113
* Creates Diactoros messages.
@@ -36,7 +38,16 @@ public function createRequest(
3638
$body = null,
3739
$protocolVersion = '1.1'
3840
) {
39-
return (new Request(
41+
if (class_exists(LaminasRequest::class)) {
42+
return (new LaminasRequest(
43+
$uri,
44+
$method,
45+
$this->streamFactory->createStream($body),
46+
$headers
47+
))->withProtocolVersion($protocolVersion);
48+
}
49+
50+
return (new ZendRequest(
4051
$uri,
4152
$method,
4253
$this->streamFactory->createStream($body),
@@ -54,7 +65,15 @@ public function createResponse(
5465
$body = null,
5566
$protocolVersion = '1.1'
5667
) {
57-
return (new Response(
68+
if (class_exists(LaminasResponse::class)) {
69+
return (new LaminasResponse(
70+
$this->streamFactory->createStream($body),
71+
$statusCode,
72+
$headers
73+
))->withProtocolVersion($protocolVersion);
74+
}
75+
76+
return (new ZendResponse(
5877
$this->streamFactory->createStream($body),
5978
$statusCode,
6079
$headers

src/StreamFactory/DiactorosStreamFactory.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
namespace Http\Message\StreamFactory;
44

55
use Http\Message\StreamFactory;
6-
use Laminas\Diactoros\Stream;
6+
use Laminas\Diactoros\Stream as LaminasStream;
77
use Psr\Http\Message\StreamInterface;
8+
use Zend\Diactoros\Stream as ZendStream;
89

910
/**
1011
* Creates Diactoros streams.
@@ -25,10 +26,19 @@ public function createStream($body = null)
2526
}
2627

2728
if (is_resource($body)) {
28-
return new Stream($body);
29+
if (class_exists(LaminasStream::class)) {
30+
return new LaminasStream($body);
31+
}
32+
33+
return new ZendStream($body);
34+
}
35+
36+
if (class_exists(LaminasStream::class)) {
37+
$stream = new LaminasStream('php://memory', 'rw');
38+
} else {
39+
$stream = new ZendStream('php://memory', 'rw');
2940
}
3041

31-
$stream = new Stream('php://memory', 'rw');
3242
if (null !== $body && '' !== $body) {
3343
$stream->write((string) $body);
3444
}

src/UriFactory/DiactorosUriFactory.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
namespace Http\Message\UriFactory;
44

55
use Http\Message\UriFactory;
6-
use Laminas\Diactoros\Uri;
6+
use Laminas\Diactoros\Uri as LaminasUri;
77
use Psr\Http\Message\UriInterface;
8+
use Zend\Diactoros\Uri as ZendUri;
89

910
/**
1011
* Creates Diactoros URI.
@@ -23,7 +24,11 @@ public function createUri($uri)
2324
if ($uri instanceof UriInterface) {
2425
return $uri;
2526
} elseif (is_string($uri)) {
26-
return new Uri($uri);
27+
if (class_exists(LaminasUri::class)) {
28+
return new LaminasUri($uri);
29+
}
30+
31+
return new ZendUri($uri);
2732
}
2833

2934
throw new \InvalidArgumentException('URI must be a string or UriInterface');

0 commit comments

Comments
 (0)