<?php
// Entity
class Book
{
private $id;
private $title;
public function __construct($id, $title)
{
$this->id = $id;
$this->title = $title;
}
... getters and setters methods ...
}
// Collection
class Books
{
private $books = array();
public function __construct(array $elements)
{
foreach ($elements as $element) {
$this->add($element);
}
}
public function add(Book $book)
{
$this->books[] = $book;
}
public function toArray()
{
return $this->books;
}
}
// DAO (Data access object)
class BookDao
{
public function findBookByName($name)
{
$db = Database::getInstance();
$row = $db->select('book')->where('name = ?', $name);
return new Book($row['id'], ['title']);
}
public function findAll()
{
$db = Database::getInstance();
$rows = $db->select('book');
return new Books($rows);
}
}
// Registry
class Registry
{
private static $objects = array();
public static function get($index){}
public static function set($index, $value){}
public static function isRegistered($index){}
}
$dao = new BookDao();
Registry::set('BookDao', $dao);
...
$dao = Registry::get('BookDao');
$books = $dao->findAll();
foreach ($books->toArray() as $index => $book) {
echo $book->getTitle();
}