PHPackages                             andydefer/php-signature-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. andydefer/php-signature-parser

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

andydefer/php-signature-parser
==============================

A flexible signature parser for CLI commands

v0.2.1(yesterday)03↑2900%MITPHPPHP ^8.1

Since Jun 18Pushed yesterdayCompare

[ Source](https://github.com/andydefer/php-signature-parser)[ Packagist](https://packagist.org/packages/andydefer/php-signature-parser)[ RSS](/packages/andydefer-php-signature-parser/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (5)Versions (4)Used By (0)

PHP Signature Parser
====================

[](#php-signature-parser)

**Un parseur strict et ordonné pour les commandes CLI qui extrait la source, les arguments requis, les arguments par défaut, les variadiques et les options.**

[![PHP Version](https://camo.githubusercontent.com/83dd395020c37276225039739320f6c8e7e99963ab21ee3d09282cb48dad2a60/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c7565)](https://php.net)[![License](https://camo.githubusercontent.com/5caa455d8debc46fb23abbadb45a733a937f3910a73fc875c2f7820468e1bb54/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e)](LICENSE)

---

Table des matières
------------------

[](#table-des-matières)

- [Installation](#installation)
- [Concepts fondamentaux](#concepts-fondamentaux)
- [Ordre strict des arguments](#ordre-strict-des-arguments)
- [Utilisation de base](#utilisation-de-base)
- [Extraction manuelle des éléments](#extraction-manuelle-des-%C3%A9l%C3%A9ments)
- [Structure des résultats](#structure-des-r%C3%A9sultats)
- [SignatureStructureVO](#signaturestructurevo)
- [Les parseurs](#les-parseurs)
- [Extensibilité](#extensibilit%C3%A9)
- [Exemples](#exemples)
- [Tests](#tests)
- [Licence](#licence)

---

Installation
------------

[](#installation)

```
composer require andydefer/php-signature-parser
```

### Prérequis

[](#prérequis)

- PHP 8.1 ou supérieur

---

Concepts fondamentaux
---------------------

[](#concepts-fondamentaux)

### La signature

[](#la-signature)

La signature est une chaîne qui décrit la structure de la commande.

```
$signature = 'backup {source} {destination} {format=zip} {output=dist} {excludes*} {purpose*} {--force} {--verbose}';
```

ÉlémentSyntaxeDescription**Source**`backup`Nom de la commande (position 0)**Requis**`{source}`Argument obligatoire**Par défaut**`{format=zip}`Argument avec valeur par défaut**Variadique**`{excludes*}`Argument qui capture plusieurs valeurs**Option**`{--force}`Flag optionnel (booléen)### La requête

[](#la-requête)

La requête est la commande réelle exécutée par l'utilisateur.

```
$query = 'backup /var/www /backup tar.gz [cache, logs, tmp] [home, data, models] --force';
```

---

Ordre strict des arguments
--------------------------

[](#ordre-strict-des-arguments)

⚠️ **L'ordre des éléments dans la signature est STRICT et IMPÉRATIF.**

OrdreTypeSyntaxeExemple**1****Source**`command``backup`**2****Requis**`{name}``{source}` `{destination}`**3****Par défaut**`{name=value}``{format=zip}` `{output=dist}`**4****Variadique**`{name*}``{excludes*}` `{purpose*}`**5****Options**`{--flag}``{--force}` `{--verbose}`### Règles strictes

[](#règles-strictes)

RègleDescription**Source**Toujours en première position (position 0)**Requis**Viennent en premier, avant tous les autres**Par défaut**Viennent après les requis, avant les variadiques**Variadiques**Toujours en dernière position des arguments**Options**Peuvent être à n'importe quelle position après la source**Ordre de la requête**Doit respecter l'ordre de la signature### Exemple d'ordre correct

[](#exemple-dordre-correct)

```
// ✅ ORDRE CORRECT
$signature = 'backup {source} {destination} {format=zip} {output=dist} {excludes*} {--force} {--verbose}';

// ❌ ORDRE INCORRECT
$signature = 'backup {format=zip} {source} {destination}'; // Default avant Requis
$signature = 'backup {source} {excludes*} {destination}'; // Variadique avant Requis
```

### Correspondance requête ↔ signature

[](#correspondance-requête--signature)

La requête doit respecter l'ordre de la signature :

```
$signature = 'backup {source} {destination} {format=zip} {excludes*} {--force}';

// ✅ CORRECT
$query = 'backup /var/www /backup tar.gz [cache, logs] --force';

// ❌ INCORRECT - ordre différent
$query = 'backup /backup /var/www tar.gz [cache, logs] --force';
```

---

Utilisation de base
-------------------

[](#utilisation-de-base)

```
