feat: migrer vers Symfony 8, PHP 8.4 et les dépendances majeures associées
- PHP 8.3 → 8.4 (Dockerfile + composer.json) - Symfony 7.0 → 8.0 (tous les composants symfony/*) - API Platform 3.x → 4.x : migration openapiContext → openapi: new Operation(...) - Doctrine DBAL 3 → 4 : suppression use_savepoints, replace prepare/executeQuery - Doctrine ORM 2.x → 3.x : ClassMetadataInfo → ClassMetadata, setParameters → setParameter - Doctrine Bundle 2.x → 3.x, Fixtures Bundle 3.x → 4.x - zenstruck/foundry 1.x → 2.x : ModelFactory → PersistentObjectFactory, getDefaults → defaults - phpmd/phpmd 2.x → 3.x-dev (seule version supportant Symfony 8) - phparkitect 0.3 → 0.8 : NotDependsOnTheseNamespaces prend un array - symfony/mercure-bundle 0.3 → 0.4, symfony/monolog-bundle 3 → 4 - Suppression de runtime/frankenphp-symfony (intégré nativement dans symfony/runtime 8) - worker.Caddyfile : suppression de APP_RUNTIME (détection automatique Symfony 8) - Routes errors.xml/wdt.xml/profiler.xml → .php (Symfony 8 supprime le XML) - Types::ARRAY → Types::JSON dans Entity/Manga.php (DBAL 4 retire array type) - Suppression de src/Schedule.php (doublon vide avec MonitoringSchedule) - Tests : hydra:Collection → Collection, hydra:member → member (API Platform 4)
This commit is contained in:
parent
5a0888eb28
commit
5ed303612a
@@ -30,7 +30,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
$valueA = $this->getPropertyValue($a, $sortBy);
|
||||
$valueB = $this->getPropertyValue($b, $sortBy);
|
||||
|
||||
return $sortOrder === 'asc'
|
||||
return 'asc' === $sortOrder
|
||||
? $valueA <=> $valueB
|
||||
: $valueB <=> $valueA;
|
||||
});
|
||||
@@ -57,6 +57,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
return $manga;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -105,10 +106,10 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
|
||||
private function getPropertyValue(Manga $manga, string $property): mixed
|
||||
{
|
||||
return match($property) {
|
||||
return match ($property) {
|
||||
'title' => $manga->getTitle()->getValue(),
|
||||
'publicationYear' => $manga->getPublicationYear(),
|
||||
default => throw new \InvalidArgumentException("Unknown sort property: $property")
|
||||
default => throw new \InvalidArgumentException("Unknown sort property: $property"),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -121,7 +122,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
$chapters = $this->chapters[$mangaId];
|
||||
|
||||
usort($chapters, function (Chapter $a, Chapter $b) use ($sortOrder) {
|
||||
return $sortOrder === 'desc'
|
||||
return 'desc' === $sortOrder
|
||||
? $b->getNumber() <=> $a->getNumber()
|
||||
: $a->getNumber() <=> $b->getNumber();
|
||||
});
|
||||
@@ -138,12 +139,13 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
$chapters = $this->chapters[$mangaId];
|
||||
|
||||
usort($chapters, function (Chapter $a, Chapter $b) use ($sortOrder) {
|
||||
return $sortOrder === 'desc'
|
||||
return 'desc' === $sortOrder
|
||||
? $b->getNumber() <=> $a->getNumber()
|
||||
: $a->getNumber() <=> $b->getNumber();
|
||||
});
|
||||
|
||||
$offset = ($page - 1) * $limit;
|
||||
|
||||
return array_slice($chapters, $offset, $limit);
|
||||
}
|
||||
|
||||
@@ -171,6 +173,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
if ($chapter && $chapter->isVisible()) {
|
||||
return $chapter;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -181,6 +184,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
return $chapter;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -196,10 +200,9 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
{
|
||||
return array_values(array_filter(
|
||||
$this->chaptersById,
|
||||
fn (Chapter $chapter) =>
|
||||
$chapter->getMangaId()->getValue() === $mangaId &&
|
||||
$chapter->getVolume() === $volume &&
|
||||
$chapter->isVisible()
|
||||
fn (Chapter $chapter) => $chapter->getMangaId()->getValue() === $mangaId
|
||||
&& $chapter->getVolume() === $volume
|
||||
&& $chapter->isVisible()
|
||||
));
|
||||
}
|
||||
|
||||
@@ -207,11 +210,10 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
{
|
||||
return array_values(array_filter(
|
||||
$this->chaptersById,
|
||||
fn (Chapter $chapter) =>
|
||||
$chapter->getMangaId()->getValue() === $mangaId &&
|
||||
$chapter->getVolume() === $volume &&
|
||||
$chapter->isVisible() &&
|
||||
$chapter->isAvailable()
|
||||
fn (Chapter $chapter) => $chapter->getMangaId()->getValue() === $mangaId
|
||||
&& $chapter->getVolume() === $volume
|
||||
&& $chapter->isVisible()
|
||||
&& $chapter->isAvailable()
|
||||
));
|
||||
}
|
||||
|
||||
@@ -228,13 +230,13 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
{
|
||||
$this->chapters[$mangaId] = [];
|
||||
|
||||
for ($i = 1; $i <= $count; $i++) {
|
||||
for ($i = 1; $i <= $count; ++$i) {
|
||||
$chapter = new Chapter(
|
||||
id: new ChapterId((string)$i),
|
||||
id: new ChapterId((string) $i),
|
||||
mangaId: new MangaId($mangaId),
|
||||
number: (float)$i,
|
||||
number: (float) $i,
|
||||
title: "Chapter $i",
|
||||
volume: (int)ceil($i / 10),
|
||||
volume: (int) ceil($i / 10),
|
||||
isVisible: true,
|
||||
createdAt: new \DateTimeImmutable()
|
||||
);
|
||||
@@ -250,6 +252,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
return $manga;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -267,7 +270,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
$manga->getTitle()->getValue(),
|
||||
$manga->getSlug()->getValue(),
|
||||
$manga->getAuthor(),
|
||||
$manga->getDescription()
|
||||
$manga->getDescription(),
|
||||
];
|
||||
|
||||
foreach ($manga->getAlternativeSlugs() as $altSlug) {
|
||||
@@ -287,6 +290,7 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
usort($sortedMangas, fn (Manga $a, Manga $b) => $a->getTitle()->getValue() <=> $b->getTitle()->getValue());
|
||||
|
||||
$offset = ($page - 1) * $limit;
|
||||
|
||||
return array_slice($sortedMangas, $offset, $limit);
|
||||
}
|
||||
|
||||
@@ -320,9 +324,9 @@ class InMemoryMangaRepository implements MangaRepositoryInterface
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($criteria->lastCheckBefore !== null) {
|
||||
if (null !== $criteria->lastCheckBefore) {
|
||||
$lastCheck = $manga->getLastMonitoringCheck();
|
||||
if ($lastCheck === null || $lastCheck >= $criteria->lastCheckBefore) {
|
||||
if (null === $lastCheck || $lastCheck >= $criteria->lastCheckBefore) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user