PHPackages                             chr15k/php-collections - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. chr15k/php-collections

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

chr15k/php-collections
======================

0.1.0(9mo ago)01PHPPHP ^8.4

Since Aug 21Pushed 9mo agoCompare

[ Source](https://github.com/chr15k/php-collections)[ Packagist](https://packagist.org/packages/chr15k/php-collections)[ RSS](/packages/chr15k-php-collections/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

PHP Collections
===============

[](#php-collections)

Approach
--------

[](#approach)

This demo is focused on a SortedLinkedList solution in PHP with a 'Collection' interface to standardize common operations (insert, remove, contains, iteration`). Type safety is enforced with PHPStan at the maximum level, while Rector and Pint ensure consistent code quality and best practices. Testing is performed with Pest and the Pest coverage plugin, achieving full coverage of all functionality.

Installation
------------

[](#installation)

```
composer require chr15k/php-collections
```

Testing
-------

[](#testing)

Run the full test suite:

```
composer test
```

Run only unit tests:

```
composer test:unit
```

Run type checks (PHPStan):

```
composer test:types
```

Run code style checks (Pint):

```
composer test:lint
```

Run code refactoring (Rector):

```
composer test:rector
```

Apply linting and refactoring (runs both Pint and Rector):

```
composer tidy
```

Usage
-----

[](#usage)

```
use Chr15k\Collection\SortedLinkedList;

$list = new SortedLinkedList();
$list->insert(5);
$list->insert(3);
$list->insert(8);
$list->insert(1);

// The list is always sorted
print_r($list->toArray()); // [1, 3, 5, 8]

// Remove a value
$list->remove(3);
print_r($list->toArray()); // [1, 5, 8]

// Check if a value exists
if ($list->contains(5)) {
    echo "5 is in the list!";
}

// Iterate over the list
foreach ($list as $value) {
    echo $value . PHP_EOL;
}

// Get the number of elements
echo $list->count(); // 3
```

Extending
---------

[](#extending)

To create your own collection type, implement the Collection interface and follow the type-safety pattern.

Here is a simple code sample for an ItegerStack:

```
