# Changelog
### 7.9.6 (2022-12-27)
- "Json"-Mapper: support objects in "Arrayy"-collections
### 7.9.5 (2022-10-13)
- try to optimize autocompletion for PhpStorm
### 7.9.4 (2022-09-06)
- try to fix phpstan (1.8.4) reported issues
### 7.9.3 (2022-07-06)
- "Collection" -> fix phpstan check for offset
### 7.9.2 (2022-07-05)
- optimize some phpdocs (phpstan)
- simplify some code
### 7.9.1 (2022-03-08)
- "To people of Russia": There is a war in Ukraine right now. The forces of the Russian Federation are attacking civilians.
- fix phpdocs for "chunk()"
- try to optimize support for PhpStorm auto-completion
### 7.9.0 (2022-02-15)
- remove "gitbook" from "dev-dependencies"
- add "containsOnly()"
- add "getBackwardsGenerator()"
- add "reverseKeepIndex()"
### 7.8.14 (2021-12-21)
- add more support for Generics + phpstan checks
- fix PHP 8.1 compatibility -> thanks @frenchcomp
### 7.8.13 (2021-10-23)
- add "NonEmptyString"-Collections (accepts "non-empty-string")
- add "Numeric"-Collections (accepts "numeric" e.g.: 1, '1', 1.1, '1.1')
- add "NumericString"-Collections (accepts "numeric" e.g.: '1', '1.1')
### 7.8.12 (2021-10-18)
- fix "Float"-Collections (only accepts "float" now)
- add "FloatInt"-Collections (accepts "float" and "int")
### 7.8.11 (2021-08-08)
- fix fatal error from "ArrayyRewindableExtendedGenerator"
### 7.8.10 (2021-06-19)
- add more support for Generics + phpstan checks
### 7.8.9 (2021-03-29)
- fix code style
- use Github Actions
### 7.8.8 (2021-03-09)
- add more support for Generics + phpstan checks
### 7.8.7 (20201-01-30)
- optimize Json Mapper with nested Arrayy elements
### 7.8.6 (2020-12-06)
- add more support for Generics + phpstan checks
### 7.8.5 (2020-11-02)
- use more Generators v3.1
- add more support for Generics + phpstan checks
- auto-generate the README
### 7.8.4 (2020-09-06)
- fix some internal Generator usage
- add more support for Generics + phpstan checks
### 7.8.3 (2020-08-22)
- use more Generators v3
- auto-generate the README
- use property type check for "Arrayy->unshift(...)"
### 7.8.2 (2020-07-28)
- use more Generators v2
- auto-generate the README
### 7.8.1 (2020-07-15)
- use more Generators
- auto-generate the README
### 7.8.0 (2020-07-11)
- search for PhpDoc @property in parent classes
-> this is working for "Arrayy" classes and "ArrayyMeta" classes
### 7.7.0 (2020-07-05)
- add "prependImmutable()"
- add "appendImmutable()"
- add prefix for "implode()"
- use more Generators
- add more tests
### 7.6.0 (2020-06-19)
- fix "offsetGet()" usage
-> now e.g. $a['foo'] will return a reference instead of a new variable,
so that we can overwrite the key of an array like this $a['foo']['counter'] += 1
### 7.5.0 (2020-04-06)
- add support for "A->get('*.key)"
### 7.4.0 (2020-03-22)
- add support for JSON-Mappings
### 7.3.2 (2020-03-10)
- add "JsonSerializable"-Collection
### 7.3.1 (2020-03-01)
- add "Callable"-Collections
- add "Object"-Collections
- add "Resource"-Collections
- add "Scalar"-Collections
### 7.3.0 (2020-02-23)
- add & use "Arrayy->getGeneratorByReference()"
- update "phpdocumentor/reflection-docblock"
### 7.2.0 (2020-01-31)
- fix "Arrayy->offsetUnset()" -> unset of non array values + fix phpdoc
- fix "Arrayy->merge*" -> now accepts also Arrayy elements in the array
- update "Arrayy->has()" -> now you can check multiple keys
- add "$key" for "Arrayy->clear()"
- add "Arrayy->flatten()"
- add "Arrayy->createFromArray()"
### 7.1.5 (2020-01-24)
- fix check for "\Arrayy\collection()"
### 7.1.4 (2020-01-24)
- use generics for "\Arrayy\array_first()" & "\Arrayy\array_last()"
### 7.1.3 (2020-01-06)
- fix phpdoc from "toPermutation()"
### 7.1.2 (2020-01-04)
- fix "@psalm-mutation-free" - via psalm
### 7.1.1 (2020-01-04)
- fix generics support - via psalm
### 7.1.0 (2020-01-04)
- more generics support - via psalm + phpstan
- add some more "Immutable" versions of sort methods
- fix "createFromObject()" -> will return static instead of self
### 7.0.3 (2019-12-30)
- fix more phpdocs
### 7.0.2 (2019-12-30)
- add "@psalm-mutation-free" - via psalm
- fix more phpdocs
### 7.0.1 (2019-12-16)
- more generics support - via phpstan (>= 0.12)
### 7.0.0 (2019-12-13)
- normalize $closure (value => key instead of key => value) for "forAll()"
- normalize $closure (value => key instead of key => value) for "partition()"
- rename "forAll()" into "validate()"
- use "iterator_count()" if possible
- add "nth()"
- add "toPermutation()"
### 6.1.1
- fix phpstan (0.12) generic support
### 6.1.0
- use phpstan (0.12) generic support
- split "InstanceCollection" into "InstancesCollection" && "InstanceCollection"
### 6.0.0
- instance of "InvalidArgumentException" we now use "TypeError" for type errors
- add "Arrayy->checkPropertiesMismatch"
- add pre-defined typified collections (TypeInterface)
- merge type check from Arrayy & Collection
- add "TypeCheckInterface"
- fix type checks
### 5.15.0
- fix serialization of "Arrayy" + "Property" (Property !== instance of ReflectionProperty anymore)
- fix for php 7.4 (ArrayObject use __serialize + __unserialize)
### 5.14.2 (2019-10-06)
- fix "Arrayy->keys()" -> use strict and non-strict comparision
### 5.14.1 (2019-09-16)
- optimize "array_last"-polyfill (php < 7.3)
### 5.14.0 (2019-09-13)
- add "Arrayy->diffKey" + "Arrayy->diffKeyAndValue"
- add more test cases
- update "phpdocumentor/reflection-docblock"
### 5.13.2 (2019-08-01)
- fix "array_first()" + "array_last()" (move from global namespace into Arrayy)
### 5.13.1 (2019-07-19)
- fix return type of "Arrayy->internalGetArray()"
### 5.13.0 (2019-07-19)
- add Arrayy->moveElementToFirstPlace()
- add Arrayy->moveElementToLastPlace()
### 5.12.1 (2019-07-03)
- fix for php >= 7.3
### 5.12.0 (2019-07-03)
- add new array key functions + most value functions
-> "Arrayy->firstKey()", "Arrayy->lastKey()", "Arrayy->mostUsedValue()", "Arrayy->mostUsedValues()"
### 5.11.1 (2019-06-25)
- Collection -> fix some string methods from the parent "Arrayy"-class
### 5.11.0 (2019-06-25)
- AbstractCollection -> accept collections (self) as valid source + fix phpdoc
### 5.10.0 (2019-06-21)
- add "keyExists()" / "delete()" / "pull()"
### 5.9.1 (2019-05-03)
- "first()" / "last()" -> fix -> do not change the current array, if it's not needed
### 5.9.0 (2019-05-03)
- "group()" / "sorter()" -> fix phpdoc
- "keys()" / "values()" -> optimize generator usage
- "replace()" -> fix immutable of the input
- "sizeIs()" / "sizeIsLessThan()" / "sizeIsGreaterThan()" / "sizeIsBetween()" -> added
- "invoke()" -> improve generator usage + fix phpdoc
- "map()" -> allow to use the key, in the callable + additional parameter
- "containsCaseInsensitive()" -> optimize for generator usage
### 5.8.1 (2019-04-30)
- optimize performance from "Arrayy->unshift()"
- optimize performance from "Arrayy->push()"
### 5.8.0 (2019-04-20)
- add a simple "Collection" implementation + function alias \Arrayy\collection()
- fix errors reported by phpstan (level 7)
- improve performance (use "dot-notation" internally only if needed)
- improve "dot-notation" handling for non "Arrayy" objects
### 5.7.1 (2019-04-18)
- "AbstractCollection" -> optimize foreach usage
- "AbstractCollection" -> fix merge && where methods
### 5.7.0 (2019-04-17)
- optimize property check in the constructor
- better support for PhpDoc @property checks
- allow callable<mixed, \Generator> as input (Arrayy::createFromGeneratorFunction())
- add a abstract "Collection" implementation
### 5.6.3 (2019-01-11)
- "ramsey/array_column" is not needed anymore
- use autoloader also for the tests
### 5.6.2 (2019-01-02)
- fix issue when requiring float types
- update phpcs fixer config
### 5.6.1 (2018-12-20)
- update "require-dev"
- optimize the "constructor"
- use the "JsonSerializable" interface
- fix fallback for "this->shuffle()"
### 5.6.0 (2018-12-20)
- use phpstan + fixes (level 5)
- use phpcs fixer
### 5.5.0 (2018-12-07)
- replace "UTF8" with "mbstring"
-> Warning: is you need the "UTF8" class, please add it separately in you composer.json
-> "voku/portable-utf8": "~5.0"
### 5.4.0 (2018-12-07)
- fix "checkForMissingPropertiesInConstructor" with arrays
-> new parameter in the constructor
- fix internal "ArrayyIterator" handling
### 5.3.2 (2018-11-10)
- use generators for for-each loops
- add "Arrayy->getGenerator()" + tests
### 5.3.1 (2018-11-05)
- test the tests via "infection" (Mutation Code Coverage: 91%)
- optimize performance
### 5.3.0 (2018-11-03)
- add "type checking for @property"
### 5.2.0 (2018-09-08)
- add Arrayy->appendArrayValues()
- fix usage of set() with nested dot-notation
### 5.1.0 (2018-06-08)
- add Arrayy->fillWithDefaults()
- fix usage of "count()" + COUNT_RECURSIVE if needed
### 5.0.0 (2017-12-23)
- update "Portable UTF8" from v4 -> v5
-> this is a breaking change without API-changes - but the requirement from
"Portable UTF8" has been changed (it no longer requires all polyfills from Symfony)
### 4.0.0 (2017-11-14)
- "php": ">=7.0"
* drop support for PHP < 7.0
* use "strict_types"
### 3.8.0 (2017-09-23)
- add some pre- / append methods + tests
### 3.7.0 (2017-08-11)
- add "Arrayy::createFromObjectVars()"
- fix internal __toString() / Arrayy->implode()
- fix in_array() usage for multidimensional array
### 3.6.0 (2017-05-09)
- add flag-parameter for "Arrayy->filter()" + polyfill for old php versions (< 5.6 || HHVM)
- add "Arrayy->countValues()"-method
### 3.5.1 (2017-04-11)
- fix "offsetGet() must be compatible with that of ArrayAccess::offsetGet()"
### 3.5.0 (2017-04-10)
- more information via "InvalidArgumentException"
- re-use the "Arrayy->customSortKeys()"-method
- add more "sort"-methods + tests
### 3.4.0 (2017-04-09)
- overwrite "ArrayObject"-methods
- dependency injection for the "Iterator" via __constructor
- fix serialize() + unserialize() -> we will process the object now, not only the array in the object
- add more tests
### 3.3.0 (2017-04-08)
- add "Arrayy->changeKeyCase()" (with UTF-8 support)
### 3.2.1 (2017-04-07)
- fix "StaticArrayy"-class -> return value from "repeat()" is always an instance of the "Arrayy"-class
### 3.2.0 (2017-04-01)
- fix php-doc (for extended classes)
- add "Array->uniqueKeepIndex()"
- fix some more php-docs
### 3.1.2
- fix "matches()" and "matchesAny()" with empty-arrays
### 3.1.1
- fix usage of "isset() / array_key_exists()" and "array()$value / array($value)"
### 3.1.0
- fix some bugs with the magic __set // __get
- fix bug from Arrayy->get()
### 3.0.0
- "Recursively return new Arrayy objects" | thx @brad-jones
### 2.2.9 (2016-12-16)
- Apply fixes from StyleCI
### 2.2.8 (2016-12-16)
- add "Arrayy->moveElement()"
### 2.2.6 (2016-12-11)
- add "Arrayy->containsKeys()"
- add "Arrayy->containsValues()"
### 2.2.4 (2016-11-05)
- fix for PHP 5.3
### 2.2.3 (2016-11-04)
- add Arrayy->divide()
- add Arrayy->swap()
- add Arrayy->stripEmpty()
### 2.2.2 (2016-08-12)
- use new version of "portable-utf8" (3.0)
### 2.2.0 (2016-06-20)
- add "containsCaseInsensitive()"
- add "isEqual()"
- add "isSequential()"
### 2.1.0 (2016-04-19)
- add "Arrayy->diffRecursive()"
### 2.0.1 (2016-03-21)
- use new "portable-utf8"-version
### 2.0.0 (2016-02-10)
- fixed dot-notation
- merged doublicate functions
- use "Immutable & Mutable"-methods
- use the "ArrayAccess"-Interface
- try to fix for old php-versions
### 1.2.0 (2016-02-04)
- add Arrayy->create()
- add Arrayy->flip()
- add Arrayy->reduce() | thx @formigone
### 1.1.1 (2016-01-31)
- "Fixed Countable interface description" | thx @dvdmarchetti
### 1.1.0 (2016-01-31)
- fixed Arrayy->mergePrependKeepIndex()
- fixed Arrayy->mergeAppendKeepIndex()
### 1.0.5 (2016-01-30)
- add Arrayy->getColumn()
- use the "array_column()"-polyfill
### 1.0.4 (2016-01-30)
- add Arrayy->randomWeighted()
- add Arrayy->split()
### 1.0.3 (2016-01-29)
- replace "self" with "static"
### 1.0.2 (2016-01-27)
- add Arrayy->isMultiArray()
- added some more documentation
### 1.0.1 (2016-01-27)
- added some more doc's
- fixed "Arrayy->random()"
### 1.0.0 (2016-01-26)
- return a "Arrayy"-object
- fixed "replaceValue()"
- rename "replaceValue()" -> into "replaceOneValue()"
- init
|