<?php

declare(strict_types=1);

namespace App\Factories;

use App\Controllers\PostController;
use Slim\Views\Twig;
use App\Repositories\PostRepositoryInterface;

/**
 * Fabrique d'instance de PostController pour faciliter l'intégration avec un container.
 */
final class PostControllerFactory
{
    /**
     * Crée une instance de PostController depuis le tableau de services renvoyé par ServiceFactory.
     *
     * @param array<string,mixed> $services
     * @return PostController
     */
    public static function create(array $services): PostController
    {
        /** @var Twig $view */
        $view = $services['view'];
        /** @var PostRepositoryInterface $repo */
        $repo = $services['postRepository'];

        return new PostController($view, $repo);
    }
}
