andaniel05 / HierarchyTrait

Añade funcionalidad jerárquica a clases

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HierarchyTrait

Añade funcionalidad jerárquica a clases.

Requerimientos

PHP 5.4.0+

Ejemplos de uso

<?php

require_once 'vendor/autoload.php';

use Andaniel05\HierarchyTrait\HierarchyInterface;
use Andaniel05\HierarchyTrait\HierarchyTrait;

/**
 * Es opcional pero recomendable implementar la interfaz.
 */
class Person implements HierarchyInterface
{
    use HierarchyTrait; // Activar la funcionalidad jerárquica.

    protected $name;
    protected $age;

    public function __construct($name, $age)
    {
        $this->name = $name;
        $this->age = $age;
    }

    /**
     * Es obligatorio implementar este método y lo recomendable
     * es que devuelva un valor tipo string.
     */
    public function getId()
    {
        return $this->name;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getAge()
    {
        return $this->age;
    }
}

// Instancias jerárquicas.
$andy    = new Person('andy', 27);
$andria  = new Person('andria', 35);
$antonio = new Person('antonio', 53);
$sonia   = new Person('sonia', 51);

// Ejemplo 1. Cuando una entidad define el padre automáticamente el padre
// lo registra como hijo. Si se desea cambiar ese comportamiento ver HierarchyTrait::setParent()

$andy->setParent($antonio);

echo isset($antonio->getChildren()['andy']); // TRUE

// Ejemplo 2. Al insertar un hijo a este se le define la instancia actual
// como padre.
$sonia->addChild($andria);

echo $andria->getParent() === $sonia; // True

About

Añade funcionalidad jerárquica a clases

License:MIT License