PHPackages                             sudeychenko/user-input-processor - 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. [Validation &amp; Sanitization](/categories/validation)
4. /
5. sudeychenko/user-input-processor

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

sudeychenko/user-input-processor
================================

Denormalizer and validator for any kind of user input.

1.1.0(9mo ago)0497MITPHPPHP &gt;= 8.4

Since Sep 10Pushed 9mo agoCompare

[ Source](https://github.com/sudeychenko/user-input-processor)[ Packagist](https://packagist.org/packages/sudeychenko/user-input-processor)[ Docs](https://github.com/sudeychenko/user-input-processor)[ RSS](/packages/sudeychenko-user-input-processor/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (2)Dependencies (10)Versions (4)Used By (0)

spiks/user-input-processor
==========================

[](#spiksuser-input-processor)

Denormalizes and validates any kind of user input, so it may be easily used in:

- HTML forms,
- APIs,
- console command arguments,
- ... and in a lot of other scenarios.

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

[](#installation)

***Warning:** At this moment the library is being tested in real projects to detect possible problems in its design, so API changes are possible. Please wait for stable version.*

PHP 8.1 or newer is required. The library is available in [Packagist](https://packagist.org/packages/spiks/user-input-processor) and may be installed with Composer:

```
composer require spiks/user-input-processor
```

Features
--------

[](#features)

The main principles behind the library:

- **Keep it simple**. The library implements only necessary subset of features. It's easy to extend the library to add more. The library is designed as a base for your own implementation, it's not swiss knife that tries to do everything.
- **Full type coverage for static analysis tools.** Public API and the library internals follow the strictest rules of [Psalm](https://psalm.dev) and [PHPStan](https://phpstan.org) - most popular static analysis tools for PHP. We are designing the library keeping type safety in mind. You will appreciate it if you are using static analysis in your projects too.

Motivation
----------

[](#motivation)

In our internal projects we use Symfony framework which offers [Symfony Forms](https://symfony.com/doc/current/forms.html) package for user input validation. Symfony Forms has a lot if disadvantages:

- Its internals are very complex,
- It's designed only for HTML forms, and it's not suitable for JSON APIs,
- It's pain to use Symfony Forms with static analysis tools,
- Difficult to maintain forms with complex logic within.

There aren't lots of alternative solutions for user input validation. That's why we decided to create our own.

Usage
-----

[](#usage)

This section will be written when we will be sure API and design is stable enough.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance57

Moderate activity, may be stable

Popularity16

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 64.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

2

Last Release

285d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/df7fc749a34d64c11dde06c5b851a4f5a3112607fae2c54fa05e2e100b9570ff?d=identicon)[sudeychenko](/maintainers/sudeychenko)

---

Top Contributors

[![flaksp](https://avatars.githubusercontent.com/u/12474739?v=4)](https://github.com/flaksp "flaksp (131 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (43 commits)")[![sudeychenko](https://avatars.githubusercontent.com/u/20325967?v=4)](https://github.com/sudeychenko "sudeychenko (24 commits)")[![omgmashina](https://avatars.githubusercontent.com/u/37215590?v=4)](https://github.com/omgmashina "omgmashina (3 commits)")[![ivankrtv](https://avatars.githubusercontent.com/u/71819692?v=4)](https://github.com/ivankrtv "ivankrtv (2 commits)")

---

Tags

validatorFormsdenormalizer

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/sudeychenko-user-input-processor/health.svg)

```
[![Health](https://phpackages.com/badges/sudeychenko-user-input-processor/health.svg)](https://phpackages.com/packages/sudeychenko-user-input-processor)
```

###  Alternatives

[respect/validation

The most awesome validation engine ever created for PHP

6.0k39.0M407](/packages/respect-validation)[seld/jsonlint

JSON Linter

1.3k224.9M254](/packages/seld-jsonlint)[composer/spdx-licenses

SPDX licenses list and validation library.

1.4k190.2M34](/packages/composer-spdx-licenses)[opis/json-schema

Json Schema Validator for PHP

64941.2M259](/packages/opis-json-schema)[laminas/laminas-validator

Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria

15847.1M212](/packages/laminas-laminas-validator)[ergebnis/json-schema-validator

Provides a JSON schema validator, building on top of justinrainbow/json-schema.

3629.5M7](/packages/ergebnis-json-schema-validator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
