Skip to content

Commit f6bf2c9

Browse files
Release version 2.0.1
1 parent 7ccabab commit f6bf2c9

File tree

7 files changed

+588
-196
lines changed

7 files changed

+588
-196
lines changed

README.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,48 @@ The `resolve()` method throws an `InvalidArgumentException` if:
131131
* An undefined option is provided.
132132
* An option value is invalid (wrong type or failed custom validation).
133133

134+
### Conditional Requirements
135+
136+
You can make an option required only if another option has a specific value using `addRequiredIf`.
137+
138+
```php
139+
$resolver = new OptionsResolver([
140+
Option::bool('has_database')->setOptional(false),
141+
Option::string('db_host')->setOptional(null),
142+
]);
143+
144+
// 'db_host' becomes required only if 'has_database' is true
145+
$resolver->addRequiredIf('db_host', 'has_database', true);
146+
```
147+
148+
### Deprecating Options
149+
150+
You can mark an option as deprecated. A `E_USER_DEPRECATED` error will be triggered if the option is used.
151+
152+
```php
153+
Option::string('old_option')->deprecate('Use "new_option" instead.');
154+
```
155+
156+
### Additional Constraints
157+
158+
The library provides helpers for common constraints like `min` and `max`. These work for strings (length), numbers (value), and arrays (count).
159+
160+
```php
161+
Option::string('username')->min(3)->max(20);
162+
Option::int('age')->min(18);
163+
Option::array('tags')->max(5);
164+
```
165+
166+
### Multiple Validators
167+
168+
You can chain multiple validators. All of them must pass.
169+
170+
```php
171+
Option::string('code')
172+
->validator(fn($v) => str_starts_with($v, 'A'))
173+
->validator(fn($v) => str_ends_with($v, 'Z'));
174+
```
175+
134176
### License
135177

136178
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -250,6 +292,48 @@ La méthode `resolve()` lance une `InvalidArgumentException` si :
250292
* Une option non définie est fournie.
251293
* Une valeur d'option est invalide (mauvais type ou échec de validation personnalisée).
252294

295+
### Prérequis Conditionnels
296+
297+
Vous pouvez rendre une option obligatoire uniquement si une autre option a une valeur spécifique en utilisant `addRequiredIf`.
298+
299+
```php
300+
$resolver = new OptionsResolver([
301+
Option::bool('has_database')->setOptional(false),
302+
Option::string('db_host')->setOptional(null),
303+
]);
304+
305+
// 'db_host' devient requis uniquement si 'has_database' est true
306+
$resolver->addRequiredIf('db_host', 'has_database', true);
307+
```
308+
309+
### Obsolescence (Deprecation)
310+
311+
Vous pouvez marquer une option comme obsolète. Une erreur `E_USER_DEPRECATED` sera déclenchée si l'option est utilisée.
312+
313+
```php
314+
Option::string('old_option')->deprecate('Utilisez "new_option" à la place.');
315+
```
316+
317+
### Contraintes Supplémentaires
318+
319+
La bibliothèque fournit des aides pour des contraintes courantes comme `min` et `max`. Elles fonctionnent pour les chaînes (longueur), les nombres (valeur) et les tableaux (nombre d'éléments).
320+
321+
```php
322+
Option::string('username')->min(3)->max(20);
323+
Option::int('age')->min(18);
324+
Option::array('tags')->max(5);
325+
```
326+
327+
### Validateurs Multiples
328+
329+
Vous pouvez enchaîner plusieurs validateurs. Tous doivent être valides.
330+
331+
```php
332+
Option::string('code')
333+
->validator(fn($v) => str_starts_with($v, 'A'))
334+
->validator(fn($v) => str_ends_with($v, 'Z'));
335+
```
336+
253337
### Licence
254338

255339
Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.

composer.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "phpdevcommunity/php-options-resolver",
3-
"description": "This library provides a simple solution for processing and validating option arrays in PHP.",
3+
"description": "Strict, Fluent, and Type-Safe Option Validation for PHP.",
44
"type": "library",
55
"license": "MIT",
66
"authors": [
77
{
88
"name": "F. Michel",
9-
"homepage": "https://www.phpdevcommunity.com"
9+
"homepage": "https://www.depohub.org"
1010
}
1111
],
1212
"autoload": {
@@ -16,7 +16,8 @@
1616
}
1717
},
1818
"require": {
19-
"php": ">=7.4"
19+
"php": ">=7.4",
20+
"ext-mbstring": "*"
2021
},
2122
"require-dev": {
2223
"depo/unitester": "^1.0.0"

0 commit comments

Comments
 (0)