Skip to content

Commit ba1abaf

Browse files
committed
Relax LastModifiedDeterminator interface to use DateTimeInterface as return type
1 parent 4274439 commit ba1abaf

File tree

7 files changed

+29
-12
lines changed

7 files changed

+29
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ final class PostsLastModifiedDeterminator implements LastModifiedDeterminator
9999
private readonly BlogPostRepository $blogPostRepository,
100100
) {
101101

102-
public function getLastModified(Request $request): ?\DateTime
102+
public function getLastModified(Request $request): ?\DateTimeInterface
103103
{
104104
$post = $this->blogPostRepository->findLatest();
105105

src/DependencyInjection/WebfactoryHttpCacheExtension.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
use Symfony\Component\DependencyInjection\Extension\Extension;
88
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
99

10+
/**
11+
* @internal
12+
* @psalm-internal Webfactory\HttpCacheBundle
13+
*/
1014
class WebfactoryHttpCacheExtension extends Extension
1115
{
1216
public function load(array $configs, ContainerBuilder $container): void

src/NotModified/Attribute/ReplaceWithNotModifiedResponse.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
namespace Webfactory\HttpCacheBundle\NotModified\Attribute;
1111

1212
use Attribute;
13-
use DateTime;
13+
use DateTimeInterface;
1414
use RuntimeException;
1515
use Symfony\Component\DependencyInjection\ContainerInterface;
1616
use Symfony\Component\HttpFoundation\Request;
@@ -27,14 +27,18 @@ final class ReplaceWithNotModifiedResponse
2727
/** @var LastModifiedDeterminator[] */
2828
private array $lastModifiedDeterminators;
2929
private ContainerInterface $container;
30-
private ?DateTime $lastModified = null;
30+
private ?DateTimeInterface $lastModified = null;
3131

3232
public function __construct(
3333
private readonly array $parameters,
3434
) {
3535
}
3636

37-
public function determineLastModified(Request $request): ?DateTime
37+
/**
38+
* @internal
39+
* @psalm-internal Webfactory\HttpCacheBundle
40+
*/
41+
public function determineLastModified(Request $request): ?DateTimeInterface
3842
{
3943
$this->initialiseLastModifiedDeterminators();
4044

@@ -48,6 +52,10 @@ public function determineLastModified(Request $request): ?DateTime
4852
return $this->lastModified;
4953
}
5054

55+
/**
56+
* @internal
57+
* @psalm-internal Webfactory\HttpCacheBundle
58+
*/
5159
public function setContainer(ContainerInterface $container): void
5260
{
5361
$this->container = $container;

src/NotModified/EventListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
* Symfony EventListener for adding a "last modified" header to the response on the one hand. On the other hand, it
2121
* replaces the execution of a controller action with a Not Modified HTTP response, if no newer "last modified" date is
2222
* determined than the one in the header of a subsequent request.
23+
*
24+
* @internal
25+
* @psalm-internal Webfactory\HttpCacheBundle
2326
*/
2427
final class EventListener
2528
{

src/NotModified/LastModifiedDeterminator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace Webfactory\HttpCacheBundle\NotModified;
1111

12-
use DateTime;
12+
use DateTimeInterface;
1313
use Symfony\Component\HttpFoundation\Request;
1414

1515
/**
@@ -22,7 +22,7 @@
2222
interface LastModifiedDeterminator
2323
{
2424
/**
25-
* @return DateTime|null
25+
* @return ?DateTimeInterface
2626
*/
2727
public function getLastModified(Request $request);
2828
}

tests/NotModified/Attribute/ReplaceWithNotModifiedResponseTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace Webfactory\HttpCacheBundle\Tests\NotModified\Attribute;
1111

1212
use DateTime;
13+
use DateTimeInterface;
1314
use PHPUnit\Framework\Attributes\DoesNotPerformAssertions;
1415
use PHPUnit\Framework\Attributes\Group;
1516
use PHPUnit\Framework\Attributes\Test;
@@ -103,14 +104,14 @@ final class FakeLastModifiedDeterminatorWithoutInterface
103104

104105
final class MyLastModifedDeterminator implements LastModifiedDeterminator
105106
{
106-
private DateTime $lastModified;
107+
private ?DateTimeInterface $lastModified;
107108

108-
public function __construct(?DateTime $lastModified = null)
109+
public function __construct(?DateTimeInterface $lastModified = null)
109110
{
110111
$this->lastModified = $lastModified ?: DateTime::createFromFormat('U', time());
111112
}
112113

113-
public function getLastModified(Request $request): DateTime
114+
public function getLastModified(Request $request): ?DateTimeInterface
114115
{
115116
return $this->lastModified;
116117
}

tests/NotModified/EventListenerTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
use Closure;
1313
use DateTime;
14+
use DateTimeInterface;
1415
use Error;
1516
use PHPUnit\Framework\Attributes\Group;
1617
use PHPUnit\Framework\Attributes\Test;
@@ -269,23 +270,23 @@ public static function actionWithMoreThanOneAttribute(): Response
269270

270271
final class AbstainingLastModifiedDeterminator implements LastModifiedDeterminator
271272
{
272-
public function getLastModified(Request $request): ?DateTime
273+
public function getLastModified(Request $request): ?DateTimeInterface
273274
{
274275
return null;
275276
}
276277
}
277278

278279
final class OneDayAgoModifiedLastModifiedDeterminator implements LastModifiedDeterminator
279280
{
280-
public function getLastModified(Request $request): DateTime
281+
public function getLastModified(Request $request): ?DateTimeInterface
281282
{
282283
return DateTime::createFromFormat('U', time() - 86400);
283284
}
284285
}
285286

286287
final class FixedDateAgoModifiedLastModifiedDeterminator implements LastModifiedDeterminator
287288
{
288-
public function getLastModified(Request $request): DateTime
289+
public function getLastModified(Request $request): ?DateTimeInterface
289290
{
290291
return new DateTime('2000-01-01');
291292
}

0 commit comments

Comments
 (0)