https://github.com/selective-php/array-reader
A strictly typed array reader for PHP
https://github.com/selective-php/array-reader
array array-reader php strictly-typed
Last synced: about 2 months ago
JSON representation
A strictly typed array reader for PHP
- Host: GitHub
- URL: https://github.com/selective-php/array-reader
- Owner: selective-php
- License: mit
- Created: 2019-10-19T13:31:56.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-05-28T16:10:48.000Z (11 months ago)
- Last Synced: 2025-11-06T08:14:58.885Z (6 months ago)
- Topics: array, array-reader, php, strictly-typed
- Language: PHP
- Size: 40 KB
- Stars: 11
- Watchers: 2
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# selective/array-reader
A strictly typed array reader for PHP.
[](https://packagist.org/packages/selective/array-reader)
[](LICENSE)
[](https://github.com/selective-php/array-reader/actions)
[](https://packagist.org/packages/selective/array-reader/stats)
## Requirements
* PHP 8.1 - 8.4
## Installation
```bash
composer require selective/array-reader
```
## Usage
You can use the `ArrayReader` to read single values from a multidimensional
array by passing the path to one of the `get{type}()` and `find{type}()` methods.
Each `get*() / find*()` method takes a default value as second argument.
If the path cannot be found in the original array, the default is used as return value.
A `get*()` method returns only the declared return type.
If the default value is not given and the element cannot be found, an exception is thrown.
A `find*()` method returns only the declared return type or `null`.
No exception is thrown if the element cannot be found.
```php
[
'key2' => [
'key3' => 'value1',
]
]
]);
// Output: value1
echo $arrayReader->getString('key1.key2.key3');
```
## Better Code Quality
Converting complex data with simple PHP works by using a lot of type casting and `if` conditions etc.
This leads to very high cyclomatic complexity and nesting depth, and thus poor "code rating".
**Before**: Conditions: 10, Paths: 512, CRAP Score: 10
Click to expand!

**After**: Conditions: 1, Paths: 1, CRAP Score: 1
Click to expand!

## Similar libraries
* https://github.com/michaelpetri/typed-input
* https://github.com/codeliner/array-reader
* https://github.com/adbario/php-dot-notation
* https://symfony.com/doc/current/components/property_access.html
## License
The MIT License (MIT). Please see [License File](LICENSE) for more information.