jdecool / guard-clauses
Guard clauses pattern implementation library
Requires
- php: ^8.1
- webmozart/assert: ^1.11
Requires (Dev)
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.68
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2025-03-07 20:54:53 UTC
README
A PHP library providing a clean and expressive way to implement guard clauses in your code. Built on top of webmozart/assert, this library offers a fluent interface for input validation and defensive programming.
Installation
You can install the package via Composer:
composer require jdecool/guard-clauses
Requirements
- PHP 8.1 or higher
Usage
The library provides a Guard
class with static methods for various assertions:
use JDecool\GuardClauses\Guard; // Basic type checks $validatedValue = Guard::string($value); $validatedValue = Guard::integer($value); $validatedValue = Guard::float($value); $validatedValue = Guard::boolean($value); $validatedValue = Guard::object($value); // String validations $validatedValue = Guard::stringNotEmpty($value); $validatedValue = Guard::contains($string, $substring); $validatedValue = Guard::startsWith($string, $prefix); $validatedValue = Guard::endsWith($string, $suffix); // Numeric comparisons $validatedValue = Guard::greaterThan($number, $limit); $validatedValue = Guard::lessThan($number, $limit); $validatedValue = Guard::range($number, $min, $max); // Array operations $validatedValue = Guard::isArray($value); $validatedValue = Guard::count($array, $expectedCount); $validatedValue = Guard::keyExists($array, $key); // And many more...
Each assertion method accepts an optional message parameter that will be used in the exception if the assertion fails:
$validatedValue = Guard::string($value, 'The value must be a string');
Error Handling
When an assertion fails, a GuardClausesException
is thrown, which extends from InvalidArgumentException
.
Development
To contribute to the development of this library:
- Clone the repository
- Install dependencies:
composer install
- Run tests:
composer test
- Run static analysis:
composer lint
License
This package is open-sourced software licensed under the MIT license.