https://github.com/efureev/php-type-normalizer
Type Normalizer
https://github.com/efureev/php-type-normalizer
normalize type-normalizer types
Last synced: 16 days ago
JSON representation
Type Normalizer
- Host: GitHub
- URL: https://github.com/efureev/php-type-normalizer
- Owner: efureev
- Created: 2023-04-11T13:34:22.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-15T12:39:58.000Z (7 months ago)
- Last Synced: 2025-03-28T12:42:27.750Z (about 1 month ago)
- Topics: normalize, type-normalizer, types
- Language: PHP
- Homepage:
- Size: 39.1 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Type Normalizer


[](https://packagist.org/packages/efureev/php-type-normalizer)
[](https://packagist.org/packages/efureev/php-type-normalizer)## Description
It transforms mixed types into you need.
## Install
For php >= 8.2
```bash
composer require efureev/php-type-normalizer "^1.0"
```## Basic Using
```php
TypeNormalizer::toInt('1') // 1
TypeNormalizer::toBool('1') // true
TypeNormalizer::toFloat('1.2') // 1.2
TypeNormalizer::toString(true) // 'true'
```## Using with Middleware
Middleware may be any `callable` variable.
```php
TypeNormalizer::toInt(' -132323 ', 'abs'); // 132323
TypeNormalizer::toInt(' -2 ', 'abs', ['pow', 2]); // 4
TypeNormalizer::toString(' test ', 'trim', 'mb_strtoupper'); // 'TEST'
TypeNormalizer::toString(null, static fn(string $item) => ''); // ''
```Middleware may be defined with params:
```php
TypeNormalizer::toInt(' -2 ', 'abs', ['pow', 2]); // 4
TypeNormalizer::toInt(' -2 ', 'abs', [fn(int $item, int $plus) => pow($item, 2) + $plus, 1]); // 5
```## Transformation Map
### Integer
```php
TypeNormalizer::toInt(1) // 1
TypeNormalizer::toInt(211) // 211
TypeNormalizer::toInt('211') // 211
TypeNormalizer::toInt(' 211 ') // 211
TypeNormalizer::toInt('1') // 1
TypeNormalizer::toInt('true') // 1
TypeNormalizer::toInt(' true ') // 1
TypeNormalizer::toInt(true) // 1
TypeNormalizer::toInt(1.00) // 1
TypeNormalizer::toInt('1.00') // 1TypeNormalizer::toInt(false) // 0
TypeNormalizer::toInt(' false ') // 0
TypeNormalizer::toInt(' 0 ') // 0
TypeNormalizer::toInt(0) // 0
TypeNormalizer::toInt('') // 0
TypeNormalizer::toInt(' ') // 0
TypeNormalizer::toInt(null) // 0TypeNormalizer::toInt('hello') // exception
TypeNormalizer::toInt('1.2') // exception
TypeNormalizer::toInt(1.2) // exception
```### Boolean
```php
TypeNormalizer::toBool(1) // true
TypeNormalizer::toBool(' 1 ') // true
TypeNormalizer::toBool(true) // true
TypeNormalizer::toBool(' true ') // true
TypeNormalizer::toBool(' 1.00 ') // true
TypeNormalizer::toBool(1.00) // trueTypeNormalizer::toBool(0) // false
TypeNormalizer::toBool(false) // false
TypeNormalizer::toBool(' false ') // false
TypeNormalizer::toBool(' 0 ') // false
TypeNormalizer::toBool(' 0.0 ') // false
TypeNormalizer::toBool('') // false
TypeNormalizer::toBool(' ') // false
TypeNormalizer::toBool(null) // falseTypeNormalizer::toBool('hello') // exception
TypeNormalizer::toBool(1.2) // exception
TypeNormalizer::toBool(22) // exception
TypeNormalizer::toBool('22') // exception
TypeNormalizer::toBool(' 0. 00') // exception
```### Float
```php
TypeNormalizer::toFloat(1) // 1
TypeNormalizer::toFloat(' 1 ') // 1
TypeNormalizer::toFloat(' -132323 ') // -1
TypeNormalizer::toFloat(true) // 1
TypeNormalizer::toFloat(' true ') // 1
TypeNormalizer::toFloat(' 1.00 ') // 1
TypeNormalizer::toFloat(' 21.21 ') // 21.21
TypeNormalizer::toFloat(1.00) // 1TypeNormalizer::toFloat(0) // 0
TypeNormalizer::toFloat(false) // 0
TypeNormalizer::toFloat(' false ') // 0
TypeNormalizer::toFloat(' 0 ') // 0
TypeNormalizer::toFloat(' 0.0 ') // 0
TypeNormalizer::toFloat('') // 0
TypeNormalizer::toFloat(' ') // 0
TypeNormalizer::toFloat(null) // 0TypeNormalizer::toFloat('hello') // exception
```## Test
```bash
composer test
composer test-cover # with coverage
```