A PHP library for representing and manipulating collections.
ramsey/collection is a PHP library for representing and manipulating collections. Much inspiration for this library comes from the Java Collections Framework.
This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.
Install this package as a dependency using Composer.
composer require ramsey/collection
The latest class API documentation is available online.
Examples of how to use this framework can be found in the Wiki pages.
Contributions are welcome! Before contributing to this project, familiarize yourself with CONTRIBUTING.md.
To develop this project, you will need PHP 7.2 or greater and Composer.
After cloning this repository locally, execute the following commands:
cd /path/to/repository
composer install
Now, you are ready to develop!
This project uses CaptainHook to validate all staged changes prior to commit.
To see all the commands available in the project dev
namespace for
Composer, type:
composer list dev
This project follows a superset of PSR-12
coding standards, enforced by PHP_CodeSniffer.
The project PHP_CodeSniffer configuration may be found in phpcs.xml.dist
.
CaptainHook will run PHP_CodeSniffer before committing. It will attempt to fix any errors it can, and it will reject the commit if there are any un-fixable issues. Many issues can be fixed automatically and will be done so pre-commit.
You may lint the entire codebase using PHP_CodeSniffer with the following commands:
# Lint
composer dev:lint
# Lint and autofix
composer dev:lint:fix
This project uses a combination of PHPStan
and Psalm to provide static analysis of PHP
code. Configurations for these are in phpstan.neon.dist
and psalm.xml
,
respectively.
CaptainHook will run PHPStan and Psalm before committing. The pre-commit hook does not attempt to fix any static analysis errors. Instead, the commit will fail, and you must fix the errors manually.
You may run static analysis manually across the whole codebase with the following command:
# Static analysis
composer dev:analyze
This project uses pds/skeleton as its base folder structure and layout.
The ramsey/collection library is copyright © Ben Ramsey and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.