devmakerlab/entities

Work with entities from your services or repositories.

v3.1.2 2022-02-20 01:36 UTC

README

Run tests Code Coverage Latest Stable Version

This package provide a way to implements entities. Useful for your services or repositories.

Usage

Create your entity in dedicated class :

use DevMakerLab\Entity;

class Human extends Entity
{
    public string $name;
    public int $age;
}

Then instanciate a new entity like that :

$human = new Human([
    'name' => 'Bob',
    'age' => 42,
]);

echo $human->name; // Bob
echo $human->age; // 42

Create your entity list like this :

use DevMakerLab\EntityList;

class People extends EntityList
{
    public function getYoungest(): Human
    {       
        $entities = $this->entities;

        uasort($entities, function ($a, $b) {
            if ($a->age === $b->age) {
                return 0;
            }
    
            return ($a > $b) ? -1 : 1;
        });

        return array_pop($entities);
    }
}

Then instanciate a list like that :

$bob = new Human(['name' => 'Bob', 'age' => 45]);
$junior = new Human(['name' => 'Junior', 'age' => 21]);
$jane = new Human(['name' => 'Jane', 'age' => 31]);

$people = new People([$bob, $junior]);
$people[] = $jane;

echo $people[0]->name; // Bob
echo $people[1]->name; // Junior
echo $people->getYoungest()->name; // Junior