GsId est un système d’identifiant personnalisé conçu pour fournir une alternative étendue aux identifiants de type GUID / UUID classiques.
Contrairement à un GUID standard basé sur 128 bits, GsId repose sur un identifiant 256 bits, représenté par 64 caractères hexadécimaux sans tirets.
Le projet fournit actuellement :
- une implémentation C# / .NET 8 ;
- une implémentation PHP ;
- une intégration JSON côté C# ;
- une intégration Symfony côté PHP ;
- un type Doctrine DBAL côté PHP ;
- une configuration globale via
GsIdOptions.
Format compact sans tirets.
9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
| Propriété | Valeur |
|---|---|
| Longueur | 64 caractères |
| Tirets | Non |
| Usage recommandé | Base de données, stockage, indexation |
Format lisible avec 5 tirets.
9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
| Propriété | Valeur |
|---|---|
| Longueur | 69 caractères |
| Tirets | Oui |
| Motif | 16-8-8-8-8-16 |
| Usage recommandé | Logs, affichage, API lisible |
GsId supporte deux modes de casse :
| Mode | Description |
|---|---|
Upper |
Lettres hexadécimales en majuscules |
Lower |
Lettres hexadécimales en minuscules |
Exemple en majuscules :
9F2A6C1E8D4B7A90-A13F9C2D-E88B4210-91AF77CB-4D6E39A2-FC018AD92E7B5C64
Exemple en minuscules :
9f2a6c1e8d4b7a90-a13f9c2d-e88b4210-91af77cb-4d6e39a2-fc018ad92e7b5c64
La configuration centrale est gérée par GsIdOptions.
| Option | Description | Valeur par défaut |
|---|---|---|
DefaultCase |
Casse par défaut | Upper |
DefaultTextFormat |
Format texte par défaut | D |
DefaultJsonFormat |
Format JSON par défaut | D |
DefaultDatabaseFormat |
Format base de données par défaut | N |
IsLocked |
Indique si les options sont verrouillées | false |
Lock |
Verrouille la configuration | false |
- le stockage interne reste invariant ;
- le parsing accepte les majuscules et les minuscules ;
- les comparaisons ne dépendent pas de la casse affichée ;
ToString()utiliseDefaultTextFormatetDefaultCase;- la sérialisation JSON utilise
DefaultJsonFormatetDefaultCase; - Doctrine utilise
DefaultDatabaseFormatetDefaultCase; - une casse ou un format explicitement passé à une méthode reste prioritaire ;
- le verrouillage empêche toute modification ultérieure des options globales.
{
"GsId": {
"DefaultCase": "Lower",
"DefaultTextFormat": "N",
"DefaultJsonFormat": "D",
"DefaultDatabaseFormat": "N",
"Lock": true
}
}Fichier associé :
csharp/src/GalacticShrine.GsId/GsIdOptionsConfiguration.cs
gsid:
default_case: Lower
default_text_format: N
default_json_format: D
default_database_format: N
lock: trueFichiers associés :
php/src/GsIdSymfonyOptionsConfigurator.php
php/src/Symfony/GsIdBundle.php
php/src/Symfony/DependencyInjection/Configuration.php
php/src/Symfony/DependencyInjection/GsIdExtension.php
Le stockage recommandé est :
CHAR(64)Avec le format :
N
Exemple :
9F2A6C1E8D4B7A90A13F9C2DE88B421091AF77CB4D6E39A2FC018AD92E7B5C64
GsId/
├─ .gitignore
├─ LICENSE.md
├─ CHANGELOG.md
├─ README.md
├─ README.en.md
├─ README.es.md
├─ README.it.md
├─ README.jp.md
├─ ARCHITECTURE.md
├─ ARCHITECTURE.en.md
├─ ARCHITECTURE.es.md
├─ ARCHITECTURE.it.md
├─ ARCHITECTURE.jp.md
├─ csharp/
│ ├─ README.md
│ ├─ examples/
│ │ └─ appsettings.gsid.json
│ ├─ src/
│ │ └─ GalacticShrine.GsId/
│ │ ├─ GalacticShrine.GsId.csproj
│ │ ├─ GsId.cs
│ │ ├─ GsIdCase.cs
│ │ ├─ GsIdConstants.cs
│ │ ├─ GsIdException.cs
│ │ ├─ GsIdFormat.cs
│ │ ├─ GsIdGenerator.cs
│ │ ├─ GsIdJsonConverter.cs
│ │ ├─ GsIdOptions.cs
│ │ ├─ GsIdOptionsConfiguration.cs
│ │ ├─ GsIdParser.cs
│ │ └─ GsIdValidator.cs
│ └─ tests/
│ └─ GalacticShrine.GsId.Tests/
│ ├─ GalacticShrine.GsId.Tests.csproj
│ └─ GsIdTests.cs
└─ php/
├─ README.md
├─ composer.json
├─ phpunit.xml
├─ config/
│ ├─ services.gsid.yaml
│ └─ packages/
│ └─ gsid.yaml
├─ src/
│ ├─ GsId.php
│ ├─ GsIdCase.php
│ ├─ GsIdConstants.php
│ ├─ GsIdDoctrineType.php
│ ├─ GsIdException.php
│ ├─ GsIdFormat.php
│ ├─ GsIdGenerator.php
│ ├─ GsIdOptions.php
│ ├─ GsIdParser.php
│ ├─ GsIdSymfonyOptionsConfigurator.php
│ ├─ GsIdSymfonyUidBridge.php
│ ├─ GsIdValidator.php
│ └─ Symfony/
│ ├─ GsIdBundle.php
│ └─ DependencyInjection/
│ ├─ Configuration.php
│ └─ GsIdExtension.php
└─ tests/
└─ GsIdTest.php
| Partie | Statut |
|---|---|
| C# build | Validé |
| C# tests | 14 / 14 |
| PHP Composer | Validé |
| PHP tests | 23 / 23 |
| PHP assertions | 46 |
| Symfony config | Préparée |
| Doctrine DBAL | Préparé |
GsId 1.0.0 : validé
C# : validé
PHP : validé
Tests : validés
Docs : structurées
GsId peut maintenant être considéré comme une base stable de développement pour les projets ⋞Galactic-Shrine⋟.