# webmozarts/assert

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/webmozarts-assert).**

7,648 stars · 161 forks · PHP · MIT

## Links

- GitHub: https://github.com/webmozarts/assert
- awesome-repositories: https://awesome-repositories.com/repository/webmozarts-assert.md

## Description

This PHP assertion library is a runtime data validator used to verify method inputs and outputs. It provides a toolkit for validating data types, numeric ranges, and string patterns during program execution to prevent invalid states.

The project serves as a static analysis helper by providing type hints and annotations that improve the accuracy of formal verification tools. It includes a collection validation utility for applying rules across arrays or iterable collections, and a filesystem validation tool to verify path existence and read or write permissions.

The library covers a broad range of validation capabilities, including object structure inspection, function behavior verification, and array structure validation. It also supports custom assertion logic and deferred error message computation.

## Tags

### Software Engineering & Architecture

- [Data Type Validation](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation.md) — Verifies that values match specific types or class instances and throws exceptions upon failure. ([source](https://github.com/webmozarts/assert#readme))
- [Array Schema Validation](https://awesome-repositories.com/f/software-engineering-architecture/array-schema-validation.md) — Includes checks to verify array keys, element counts, and whether collections are sequential or associative. ([source](https://github.com/webmozarts/assert#readme))
- [Defensive Programming Toolkits](https://awesome-repositories.com/f/software-engineering-architecture/defensive-programming-toolkits.md) — Implements defensive programming workflows by validating types and numeric ranges before data processing.
- [Regex Pattern Validators](https://awesome-repositories.com/f/software-engineering-architecture/regex-pattern-validators.md) — Provides utilities that use regular expressions to validate string formats such as emails and UUIDs.
- [Static Analysis Annotations](https://awesome-repositories.com/f/software-engineering-architecture/static-analysis-annotations.md) — Provides type hints and annotations that improve the accuracy of external static analysis tools for formal verification.
- [Runtime Contract Enforcement](https://awesome-repositories.com/f/software-engineering-architecture/api-contract-definitions/runtime-contract-enforcement.md) — Provides runtime verification to ensure incoming data structures and object properties match expected API formats.
- [Class Property Validation](https://awesome-repositories.com/f/software-engineering-architecture/class-property-validation.md) — Verifies the existence of specific methods or properties and checks if class properties have been initialized. ([source](https://github.com/webmozarts/assert/blob/master/CHANGELOG.md))
- [Bulk Element Validation](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/collection-type-validation/bulk-element-validation.md) — Includes a utility for applying the same validation logic to every element within an array or iterable collection.
- [Path Permission Validation](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/import-failure-loggers/import-validation-utilities/file-path-existence-validators/path-permission-validation.md) — Ensures a filesystem path exists and possesses specific permissions, such as being a readable file or writable directory. ([source](https://github.com/webmozarts/assert#readme))
- [Optional Field Guards](https://awesome-repositories.com/f/software-engineering-architecture/runtime-value-validation/nullable-type-support/explicit-nullable-validators/optional-field-guards.md) — Allows validation checks to be executed only when a provided value is not null, supporting optional fields. ([source](https://github.com/webmozarts/assert/blob/master/README.md))
- [Validation Error Customizations](https://awesome-repositories.com/f/software-engineering-architecture/validation-error-customizations.md) — Provides mechanisms for developers to define custom logic for reporting specific failure details during validation. ([source](https://github.com/webmozarts/assert/blob/master/CHANGELOG.md))

### Testing & Quality Assurance

- [Input Validation](https://awesome-repositories.com/f/testing-quality-assurance/validation-verification/input-validation.md) — Provides comprehensive logic for validating that method arguments and return values meet specific correctness criteria.
- [Numeric Range Assertions](https://awesome-repositories.com/f/testing-quality-assurance/numeric-range-assertions.md) — Provides assertions to confirm that integers fall within specific bounds, including positive and negative ranges. ([source](https://github.com/webmozarts/assert/blob/master/CHANGELOG.md))
- [Collection Condition Assertions](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/assertions-and-validation/assertion-validation-utilities/assertion-libraries/collection-membership-assertions/collection-condition-assertions.md) — Enables running a single validation predicate against every individual element within an array or iterable collection. ([source](https://github.com/webmozarts/assert#readme))
- [Value Property Assertions](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/assertions-and-validation/assertion-validation-utilities/assertion-libraries/execution-assertions/assertion-failure-handlers/value-property-assertions.md) — Provides a set of checks to verify conditions such as equality, nullability, and numeric range boundaries. ([source](https://github.com/webmozarts/assert#readme))
- [Custom Assertions](https://awesome-repositories.com/f/testing-quality-assurance/custom-assertions.md) — Allows the creation of specialized validation rules by extending the base assertion class. ([source](https://github.com/webmozarts/assert#readme))
- [Type Inference Support](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis/type-inference-support.md) — Passes type inference and annotations to external tools to improve code safety and formal verification. ([source](https://github.com/webmozarts/assert/blob/master/README.md))

### Data & Databases

- [Bulk Element Validation](https://awesome-repositories.com/f/data-databases/collection-iterators/collection-iteration/bulk-element-validation.md) — Provides utilities to apply a single assertion logic across every element within arrays or iterable collections.

### Programming Languages & Runtimes

- [PHP Validation Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/php-validation-libraries.md) — Provides a comprehensive set of runtime validation and assertion tools specifically for the PHP runtime.
- [Validation Execution Guards](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-effect-execution/conditional-execution/validation-execution-guards.md) — Provides execution guards that skip validation checks when inputs are null to support optional data fields.
- [Static Type Assertions](https://awesome-repositories.com/f/programming-languages-runtimes/type-conversion-and-casting/static-type-assertions.md) — Provides type hints and assertions that assist static analysis tools in detecting type mismatches during development.

### Security & Cryptography

- [Runtime Data Validation](https://awesome-repositories.com/f/security-cryptography/input-validation-schemas/runtime-data-validation.md) — Verifies data types, numeric ranges, and string patterns during execution to prevent invalid application states.

### Web Development

- [String Format Validators](https://awesome-repositories.com/f/web-development/string-format-validators.md) — Verifies that strings match standard formats like emails and UUIDs using regular expressions. ([source](https://github.com/webmozarts/assert#readme))

### Development Tools & Productivity

- [Object Inspection Tools](https://awesome-repositories.com/f/development-tools-productivity/object-inspection-tools.md) — Confirms the existence of specific classes, interfaces, methods, or properties within an object definition. ([source](https://github.com/webmozarts/assert#readme))
- [Static Analysis Helpers](https://awesome-repositories.com/f/development-tools-productivity/static-analysis-helpers.md) — Offers assertions and annotations that provide accurate type hinting for static analysis tools.
- [Assertion Hierarchies](https://awesome-repositories.com/f/development-tools-productivity/validation-logic/logic-validation-frameworks/assertion-based-validations/assertion-hierarchies.md) — Uses a base assertion class hierarchy to provide reusable validation logic across various data types.
