Classes de Coleção em PHP

Classes do tipo Collection (Coleção) são substitutas OOP para as estruturas de dados de array. Muito parecido com um array, uma coleção também contém elementos membros, embora estes tendem a ser objetos em vez de tipos mais simples como strings e inteiros.

Exemplo básico de uma classe de Coleção

Uma classe do tipo Coleção precisa expor métodos que nos permitam adicionar, retornar e remover itens, também é interessante ter métodos que nos permita saber quantos itens existem em nossa coleção. Partindo deste princípio, um classe básica de coleção poderia ser assim:

<?php
class Collection 
{
    private $items = array();
 
    public function addItem($obj, $key = null) {
        if ($key == null) {
            $this->items[] = $obj;
        }
        else {
            if (isset($this->items[$key])) {
                throw new KeyHasUseException("A chave $key já está sendo utilizada.");
            }
            else {
                $this->items[$key] = $obj;
            }
        }
    }
 
    public function deleteItem($key) {
        if (isset($this->items[$key])) {
            unset($this- >items[$key]);
        }
        else {
            throw new KeyInvalidException("A chave $key é inválida.");
        }
    }
     
    public function getItem($key) {
        if (isset($this->items[$key])) {
            return $this->items[$key];
        }
        else {
            throw new KeyInvalidException("A chave $key é inválida.");
        }
    }
    
    public function keys() {
        return array_keys($this->items);
    }    
    
    public function length() {
        return count($this->items);
    }
    
    public function keyExists($key) {
        return isset($this->items[$key]);
    }
}

O array $items prove a localização onde cada objeto membro da coleção está armazenado. O método addItem() nos permite adicionar um novo objeto na coleção, com o método deleteItem() conseguimos remover um objeto especifico e com o método getItem() conseguimos retornar um objeto especifico da coleção.

Com o addItem(), nós adicionamos um objeto à coleção ao adiciona-lo no array $items na posição especificada em $key (se não for informado $key, o PHP colocará automaticamente no próximo índice disponível no array).

Veja abaixo um exemplo de utilização de nossa classe.

<?php
require_once "Collection.php";
 
class Atendimento
{
    private $name;
    private $number;
 
    public function __construct($name, $number) {
        $this->name = $name;
        $this->number = $number;
    }
 
    public function __toString() {
        return $this->name . " é o número " . $this->number;
    }
}
 
$c = new Collection();
$c->addItem(new Atendimento("Steve", 14), "steve");
$c->addItem(new Atendimento("Ed", 37), "ed");
$c->addItem(new Atendimento("Bob", 49), "bob");
 
$c->deleteItem("steve");
 
try {
    $c->getItem("steve");
}
catch (KeyInvalidException $e) {
    echo "Não encontrado. ".$e->getMessage();
}

Este exemplo pode não ser particularmente interessante, mas ele consegue passar a ideia da utilização de Coleções.

Marcos de P. Muniz

Graduado em Sistemas de Informação pela UEMG, é Pós Graduado em Segurança da Informação pela Faculdade Pitágoras, é desenvolvedor PHP desde 2006, trabalha como Analista / Desenvolvedor em uma empresa que atua na área de ensino a distância, faz freelancer criando sites, sistemas e portais utilizando PHP, MySQL e jQuery.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *