Files
SkinbaseNova/app/Services/Sitemaps/SitemapRegistry.php

72 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Services\Sitemaps;
use App\Services\Sitemaps\Builders\ArtworksSitemapBuilder;
use App\Services\Sitemaps\Builders\CardsSitemapBuilder;
use App\Services\Sitemaps\Builders\CategoriesSitemapBuilder;
use App\Services\Sitemaps\Builders\CollectionsSitemapBuilder;
use App\Services\Sitemaps\Builders\ForumCategoriesSitemapBuilder;
use App\Services\Sitemaps\Builders\ForumIndexSitemapBuilder;
use App\Services\Sitemaps\Builders\ForumThreadsSitemapBuilder;
use App\Services\Sitemaps\Builders\GoogleNewsSitemapBuilder;
use App\Services\Sitemaps\Builders\NewsSitemapBuilder;
use App\Services\Sitemaps\Builders\StaticPagesSitemapBuilder;
use App\Services\Sitemaps\Builders\StoriesSitemapBuilder;
use App\Services\Sitemaps\Builders\TagsSitemapBuilder;
use App\Services\Sitemaps\Builders\UsersSitemapBuilder;
final class SitemapRegistry
{
/**
* @var array<string, SitemapBuilder>
*/
private array $builders;
public function __construct(
ArtworksSitemapBuilder $artworks,
UsersSitemapBuilder $users,
TagsSitemapBuilder $tags,
CategoriesSitemapBuilder $categories,
CollectionsSitemapBuilder $collections,
CardsSitemapBuilder $cards,
StoriesSitemapBuilder $stories,
NewsSitemapBuilder $news,
GoogleNewsSitemapBuilder $googleNews,
ForumIndexSitemapBuilder $forumIndex,
ForumCategoriesSitemapBuilder $forumCategories,
ForumThreadsSitemapBuilder $forumThreads,
StaticPagesSitemapBuilder $staticPages,
) {
$this->builders = [
$artworks->name() => $artworks,
$users->name() => $users,
$tags->name() => $tags,
$categories->name() => $categories,
$collections->name() => $collections,
$cards->name() => $cards,
$stories->name() => $stories,
$news->name() => $news,
$googleNews->name() => $googleNews,
$forumIndex->name() => $forumIndex,
$forumCategories->name() => $forumCategories,
$forumThreads->name() => $forumThreads,
$staticPages->name() => $staticPages,
];
}
/**
* @return array<string, SitemapBuilder>
*/
public function all(): array
{
return $this->builders;
}
public function get(string $name): ?SitemapBuilder
{
return $this->builders[$name] ?? null;
}
}