yiisoft / arrays
Yii Array Helper
Fund package maintenance!
Opencollective
yiisoft
Installs: 930 397
Dependents: 61
Suggesters: 1
Security: 0
Stars: 44
Watchers: 19
Forks: 27
Open Issues: 3
Requires
- php: ^8.0
- yiisoft/strings: ^2.1
Requires (Dev)
- maglnet/composer-require-checker: ^4.4
- phpunit/phpunit: ^9.5
- rector/rector: ^0.15.4
- roave/infection-static-analysis-plugin: ^1.25
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.4
This package is auto-updated.
Last update: 2023-09-14 08:04:46 UTC
README
Yii Arrays
The package provides:
ArrayHelper
that has static methods to work with arrays;ArraySorter
that has static methods for sort arrays;ArrayAccessTrait
provides the implementation for \IteratorAggregate, \ArrayAccess and \Countable;ArrayableInterface
andArrayableTrait
for use in classes who want to support customizable representation of their instances.
Requirements
- PHP 8.0 or higher.
Installation
composer require yiisoft/arrays --prefer-dist
ArrayHelper usage
Array helper methods are static so usage is like the following:
$username = \Yiisoft\Arrays\ArrayHelper::getValue($_POST, 'username');
Overall the helper has the following method groups.
Getting data
- getValue
- getValueByPath
- getColumn
- getObjectVars
Setting data
- setValue
- setValueByPath
Removing data
- remove
- removeByPath
- removeValue
Detecting array types
- isIndexed
- isAssociative
HTML encoding and decoding values
- htmlDecode
- htmlEncode
Testing against arrays
- isIn
- isSubset
Transformation
- index
- group
- filter
- map
- merge
- toArray
Other
- keyExists
- pathExists
ArraySorter usage
Array sorter has one static method which usage is like the following:
\Yiisoft\Arrays\ArraySorter::multisort($data, ['age', 'name'], [SORT_ASC, SORT_DESC]);
ArrayAccessTrait usage
ArrayAccessTrait
provides the implementation for
\IteratorAggregate,
\ArrayAccess and
\Countable.
Note that ArrayAccessTrait
requires the class using it contain a property named data
which should be an array.
The data will be exposed by ArrayAccessTrait to support accessing the class object like an array.
Example of use:
use \Yiisoft\Arrays\ArrayAccessTrait; class OfficeClassification implements \IteratorAggregate, \ArrayAccess, \Countable { use ArrayAccessTrait; public array $data = [ 'a' => 'Class A', 'b' => 'Class B', 'c' => 'Class C', ]; } $classification = new OfficeClassification(); echo 'Count classes: ' . $classification->count() . "\n"; // 3 $iterator = $classification->getIterator(); while ($iterator->valid()) { echo $iterator->current() . "\n"; // Class A, Class B, Class C $iterator->next(); }
ArrayableInterface and ArrayableTrait usage
ArrayableInterface
and its implementation ArrayableTrait
intended for use in classes who want to support customizable representation of their instances.
Example of use:
use \Yiisoft\Arrays\ArrayableTrait; use \Yiisoft\Arrays\ArrayableInterface; class Car implements ArrayableInterface { use ArrayableTrait; public string $type = 'Crossover'; public string $color = 'Red'; public int $torque = 472; } $car = new Car(); $data = $car->toArray(['type', 'color']); // ['type' => 'Crossover', 'color' => 'Red']
Testing
Unit testing
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
Mutation testing
The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:
./vendor/bin/roave-infection-static-analysis-plugin
Static analysis
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
License
The Yii Arrays is free software. It is released under the terms of the BSD License. Please see LICENSE
for more information.
Maintained by Yii Software.