andaniel05/object-collection

v1.0.0 2016-10-04 00:53 UTC

This package is auto-updated.

Last update: 2024-08-29 03:42:09 UTC


README

表示同一类型的对象集合。

内部工作原理

内部使用原生数组来存储元素。在类的构造函数中,需要指定要存储的元素类型。这种元素类型可以是类名或接口名。在插入元素时,将检查新元素的类型是否与构造函数中指定的类型相匹配,因此保证数组只包含指定类型的元素。

要求

PHP 5.3+

使用示例

示例1. 使用类的基本操作。

<?php

use Andaniel05\ObjectCollection\ObjectCollection;

class Person
{
    public $name;
    public $age;

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

$andy    = new Person('andy', 27);
$andria  = new Person('andria', 35);
$sonia   = new Person('sonia', 52);
$antonio = new Person('antonio', 54);

$collection = new ObjectCollection('Person');

// Inserción con índices.
$collection['andy']   = $andy;
$collection['andria'] = $andria;

// Inserción sin índices (añade al final del array).
$collection[] = $sonia;
$collection[] = $antonio;

// Recorridos en forma de array. Hay garantía de que $person será siempre una
// instancia de la clase Person.
foreach ($collection as $index => $person) {
    echo "Index: {$key}, Name: {$person->getName()}, Age: {$person->getAge()}\n";
}

// Contar elementos.
echo count($collection); // Devuelve 4.

// Obtener elementos.
$andy1 = $collection['andy'];

// Comprobar existencia de elementos.
echo isset($collection['andy']); // Devuelve TRUE.

// Eliminar elementos.
unset($collection['andria']);

// Obtener el array de la colección.
$array = $collection->getArray();

示例2. 创建自定义集合类型。

<?php

use Andaniel05\ObjectCollection\ObjectCollection;

/**
 * Tipo de colección personalizada que solo admite instancias de la clase 'Person'.
 */
class PersonCollection extends ObjectCollection
{
    public function __construct()
    {
        parent::__construct('Person');
    }
}

// Sobre las instancias de la clase PersonCollection se aplican las mismas
// operaciones del ejemplo anterior.
$collection = new PersonCollection;