<?php

/*
 * This file is part of the Serenity package.
 *
 * (c) CP Creation <web@cpcreation.fr>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Serenity\CoreBundle\Shared\Common;

use Symfony\Component\Uid\Uuid;

/**
 * Interface IdentifierInterface.
 *
 * Contrat garantissant qu’une entité possède un identifiant unique de type {@see Uuid}.
 *
 * ## Objectif
 * Cette interface établit une convention commune entre toutes les entités du domaine
 * disposant d’un identifiant unique. Elle permet :
 *  - D’uniformiser la gestion des identifiants dans tout le modèle de domaine ;
 *  - D’écrire du code générique (services, repositories, factories, etc.)
 *    sans dépendre d’une classe d’entité spécifique ;
 *  - De renforcer la cohérence et la traçabilité dans une architecture DDD.
 */
interface IdentifierInterface
{
    public function getId(): Uuid;
}
