Skip to content

Instantly share code, notes, and snippets.

@wouerner
Last active October 1, 2020 16:51
Show Gist options
  • Save wouerner/6273212 to your computer and use it in GitHub Desktop.
Save wouerner/6273212 to your computer and use it in GitHub Desktop.
ArrayObject PHP exemplos
<?php namespace livraria;
/**
* Como usar ArrayObject
* OBS: Instale o php xdebug para visualizar os resultados.
**/
/**
* Objeto livro
* @author Wouerner <wouerner@gmail.com>
**/
class Livro {
private $titulo;
public function getTitulo()
{
return $this->titulo;
}
public function setTitulo($titulo)
{
$this->titulo = $titulo;
}
}
/**
* Coleção de livros
*
* @author Wouerner <wouerner@gmail.com>
**/
namespace livraria;
use \ArrayObject;
class Colecao {
private $titulo;
private $livros;
public function __construct($titulo)
{
$this->titulo = $titulo;
$this->livros = new ArrayObject();
// poderia implementar com extends para herdar todos metodos de ArrayObject
}
public function getTitulo()
{
return $this->titulo;
}
public function setTitulo($titulo)
{
$this->titulo = $titulo;
}
public function addLivro(Livro $livro)
{
$this->livros->offsetSet($livro->getTitulo(),$livro);
//$this->livros->append($livro); //adiciona um indice automatico
}
public function delLivro(Livro $livro)
{
$this->livros->offsetUnset($livro->getTitulo() );
}
public function findLivro(Livro $livro)
{
return $this->livros->offsetExists($livro->getTitulo());
}
}
$livro = new Livro();
$livro->setTitulo('Apocalipse');
$livro2 = new Livro();
$livro2->setTitulo('Geneses');
$colecao = new Colecao('Biblia');
$colecao->addLivro($livro);
$colecao->addLivro($livro2);
//adiciona 2 livros
echo 'Livros:' ;
var_dump($livro);
var_dump($livro2);
// mostrando a coleção
echo 'Colecao:';
var_dump($colecao);
//procura o livro
echo 'Encontrou, '.$livro->getTitulo().'?';
var_dump($colecao->findLivro($livro));
//excluir o livro
echo 'Livro excluido!';
$colecao->delLivro($livro2);
var_dump($colecao);
foreach($colecao->livros as $k => $livro)
{
echo $k.' => '.$livro->getTitulo().', ';
}
// total dos livros
echo 'total: '.$colecao->livros->count();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment