Skip to content

Commit c8537e4

Browse files
authored
Merge pull request #2529 from acelaya-forks/php-8.4-goodies
Simplify NotFoundRedirectConfigInterface with property hooks and asymetric visibility
2 parents ad15ae1 + c42fb67 commit c8537e4

15 files changed

+54
-152
lines changed

module/CLI/src/Command/Domain/DomainRedirectsCommand.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,15 @@ public function __invoke(
8888
$this->domainService->configureNotFoundRedirects($domainAuthority, NotFoundRedirects::withRedirects(
8989
$ask(
9090
'URL to redirect to when a user hits this domain\'s base URL',
91-
$domain?->baseUrlRedirect(),
91+
$domain?->baseUrlRedirect,
9292
),
9393
$ask(
9494
'URL to redirect to when a user hits a not found URL other than an invalid short URL',
95-
$domain?->regular404Redirect(),
95+
$domain?->regular404Redirect,
9696
),
9797
$ask(
9898
'URL to redirect to when a user hits an invalid short URL',
99-
$domain?->invalidShortUrlRedirect(),
99+
$domain?->invalidShortUrlRedirect,
100100
),
101101
));
102102

module/CLI/src/Command/Domain/ListDomainsCommand.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ public function __invoke(
5959

6060
private function notFoundRedirectsToString(NotFoundRedirectConfigInterface $config): string
6161
{
62-
$baseUrl = $config->baseUrlRedirect() ?? 'N/A';
63-
$regular404 = $config->regular404Redirect() ?? 'N/A';
64-
$invalidShortUrl = $config->invalidShortUrlRedirect() ?? 'N/A';
62+
$baseUrl = $config->baseUrlRedirect ?? 'N/A';
63+
$regular404 = $config->regular404Redirect ?? 'N/A';
64+
$invalidShortUrl = $config->invalidShortUrlRedirect ?? 'N/A';
6565

6666
return <<<EOL
6767
* Base URL: {$baseUrl}

module/CLI/test/Command/Domain/ListDomainsCommandTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public function allDomainsAreProperlyPrinted(array $input, string $expectedOutpu
4141

4242
$this->domainService->expects($this->once())->method('listDomains')->with()->willReturn([
4343
DomainItem::forDefaultDomain('foo.com', new NotFoundRedirectOptions(
44-
invalidShortUrl: 'https://foo.com/default/invalid',
45-
baseUrl: 'https://foo.com/default/base',
44+
invalidShortUrlRedirect: 'https://foo.com/default/invalid',
45+
baseUrlRedirect: 'https://foo.com/default/base',
4646
)),
4747
DomainItem::forNonDefaultDomain(Domain::withAuthority('bar.com')),
4848
DomainItem::forNonDefaultDomain($bazDomain),

module/Core/src/Config/EmptyNotFoundRedirectConfig.php

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,7 @@
66

77
final class EmptyNotFoundRedirectConfig implements NotFoundRedirectConfigInterface
88
{
9-
public function invalidShortUrlRedirect(): string|null
10-
{
11-
return null;
12-
}
13-
14-
public function hasInvalidShortUrlRedirect(): bool
15-
{
16-
return false;
17-
}
18-
19-
public function regular404Redirect(): string|null
20-
{
21-
return null;
22-
}
23-
24-
public function hasRegular404Redirect(): bool
25-
{
26-
return false;
27-
}
28-
29-
public function baseUrlRedirect(): string|null
30-
{
31-
return null;
32-
}
33-
34-
public function hasBaseUrlRedirect(): bool
35-
{
36-
return false;
37-
}
9+
private(set) string|null $invalidShortUrlRedirect = null;
10+
private(set) string|null $regular404Redirect = null;
11+
private(set) string|null $baseUrlRedirect = null;
3812
}

module/Core/src/Config/NotFoundRedirectConfigInterface.php

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

77
interface NotFoundRedirectConfigInterface
88
{
9-
public function invalidShortUrlRedirect(): string|null;
10-
11-
public function hasInvalidShortUrlRedirect(): bool;
12-
13-
public function regular404Redirect(): string|null;
14-
15-
public function hasRegular404Redirect(): bool;
16-
17-
public function baseUrlRedirect(): string|null;
18-
19-
public function hasBaseUrlRedirect(): bool;
9+
public string|null $invalidShortUrlRedirect { get; }
10+
public string|null $regular404Redirect { get; }
11+
public string|null $baseUrlRedirect { get; }
2012
}

module/Core/src/Config/NotFoundRedirectResolver.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ public function resolveRedirectResponse(
3232
UriInterface $currentUri,
3333
): ResponseInterface|null {
3434
$urlToRedirectTo = match (true) {
35-
$notFoundType->isBaseUrl() && $config->hasBaseUrlRedirect() => $config->baseUrlRedirect(),
36-
$notFoundType->isRegularNotFound() && $config->hasRegular404Redirect() => $config->regular404Redirect(),
37-
$notFoundType->isInvalidShortUrl() && $config->hasInvalidShortUrlRedirect() =>
38-
$config->invalidShortUrlRedirect(),
35+
$notFoundType->isBaseUrl() => $config->baseUrlRedirect,
36+
$notFoundType->isRegularNotFound() => $config->regular404Redirect,
37+
$notFoundType->isInvalidShortUrl() => $config->invalidShortUrlRedirect,
3938
default => null,
4039
};
4140

module/Core/src/Config/NotFoundRedirects.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
use JsonSerializable;
88

9-
final class NotFoundRedirects implements JsonSerializable
9+
final readonly class NotFoundRedirects implements JsonSerializable
1010
{
1111
private function __construct(
12-
public readonly string|null $baseUrlRedirect,
13-
public readonly string|null $regular404Redirect,
14-
public readonly string|null $invalidShortUrlRedirect,
12+
public string|null $baseUrlRedirect,
13+
public string|null $regular404Redirect,
14+
public string|null $invalidShortUrlRedirect,
1515
) {
1616
}
1717

@@ -30,7 +30,7 @@ public static function withoutRedirects(): self
3030

3131
public static function fromConfig(NotFoundRedirectConfigInterface $config): self
3232
{
33-
return new self($config->baseUrlRedirect(), $config->regular404Redirect(), $config->invalidShortUrlRedirect());
33+
return new self($config->baseUrlRedirect, $config->regular404Redirect, $config->invalidShortUrlRedirect);
3434
}
3535

3636
public function jsonSerialize(): array

module/Core/src/Config/Options/NotFoundRedirectOptions.php

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,48 +10,18 @@
1010
final readonly class NotFoundRedirectOptions implements NotFoundRedirectConfigInterface
1111
{
1212
public function __construct(
13-
public string|null $invalidShortUrl = null,
14-
public string|null $regular404 = null,
15-
public string|null $baseUrl = null,
13+
public string|null $invalidShortUrlRedirect = null,
14+
public string|null $regular404Redirect = null,
15+
public string|null $baseUrlRedirect = null,
1616
) {
1717
}
1818

1919
public static function fromEnv(): self
2020
{
2121
return new self(
22-
invalidShortUrl: EnvVars::DEFAULT_INVALID_SHORT_URL_REDIRECT->loadFromEnv(),
23-
regular404: EnvVars::DEFAULT_REGULAR_404_REDIRECT->loadFromEnv(),
24-
baseUrl: EnvVars::DEFAULT_BASE_URL_REDIRECT->loadFromEnv(),
22+
invalidShortUrlRedirect: EnvVars::DEFAULT_INVALID_SHORT_URL_REDIRECT->loadFromEnv(),
23+
regular404Redirect: EnvVars::DEFAULT_REGULAR_404_REDIRECT->loadFromEnv(),
24+
baseUrlRedirect: EnvVars::DEFAULT_BASE_URL_REDIRECT->loadFromEnv(),
2525
);
2626
}
27-
28-
public function invalidShortUrlRedirect(): string|null
29-
{
30-
return $this->invalidShortUrl;
31-
}
32-
33-
public function hasInvalidShortUrlRedirect(): bool
34-
{
35-
return $this->invalidShortUrl !== null;
36-
}
37-
38-
public function regular404Redirect(): string|null
39-
{
40-
return $this->regular404;
41-
}
42-
43-
public function hasRegular404Redirect(): bool
44-
{
45-
return $this->regular404 !== null;
46-
}
47-
48-
public function baseUrlRedirect(): string|null
49-
{
50-
return $this->baseUrl;
51-
}
52-
53-
public function hasBaseUrlRedirect(): bool
54-
{
55-
return $this->baseUrl !== null;
56-
}
5727
}

module/Core/src/Domain/Entity/Domain.php

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class Domain extends AbstractEntity implements JsonSerializable, NotFoundRedirec
1515

1616
private function __construct(
1717
public readonly string $authority,
18-
private string|null $baseUrlRedirect = null,
19-
private string|null $regular404Redirect = null,
20-
private string|null $invalidShortUrlRedirect = null,
18+
private(set) string|null $baseUrlRedirect = null,
19+
private(set) string|null $regular404Redirect = null,
20+
private(set) string|null $invalidShortUrlRedirect = null,
2121
) {
2222
}
2323

@@ -31,36 +31,6 @@ public function jsonSerialize(): string
3131
return $this->authority;
3232
}
3333

34-
public function invalidShortUrlRedirect(): string|null
35-
{
36-
return $this->invalidShortUrlRedirect;
37-
}
38-
39-
public function hasInvalidShortUrlRedirect(): bool
40-
{
41-
return $this->invalidShortUrlRedirect !== null;
42-
}
43-
44-
public function regular404Redirect(): string|null
45-
{
46-
return $this->regular404Redirect;
47-
}
48-
49-
public function hasRegular404Redirect(): bool
50-
{
51-
return $this->regular404Redirect !== null;
52-
}
53-
54-
public function baseUrlRedirect(): string|null
55-
{
56-
return $this->baseUrlRedirect;
57-
}
58-
59-
public function hasBaseUrlRedirect(): bool
60-
{
61-
return $this->baseUrlRedirect !== null;
62-
}
63-
6434
public function configureNotFoundRedirects(NotFoundRedirects $redirects): void
6535
{
6636
$this->baseUrlRedirect = $redirects->baseUrlRedirect;

module/Core/test/Config/EmptyNotFoundRedirectConfigTest.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ protected function setUp(): void
2020
#[Test]
2121
public function allMethodsReturnHardcodedValues(): void
2222
{
23-
self::assertNull($this->redirectsConfig->invalidShortUrlRedirect());
24-
self::assertFalse($this->redirectsConfig->hasInvalidShortUrlRedirect());
25-
self::assertNull($this->redirectsConfig->regular404Redirect());
26-
self::assertFalse($this->redirectsConfig->hasRegular404Redirect());
27-
self::assertNull($this->redirectsConfig->baseUrlRedirect());
28-
self::assertFalse($this->redirectsConfig->hasBaseUrlRedirect());
23+
self::assertNull($this->redirectsConfig->invalidShortUrlRedirect);
24+
self::assertNull($this->redirectsConfig->regular404Redirect);
25+
self::assertNull($this->redirectsConfig->baseUrlRedirect);
2926
}
3027
}

0 commit comments

Comments
 (0)