<?php
// Entity
class Element
{
private $id;
private $title;
public function __construct($id, $title)
{
$this->id = $id;
$this->title = $title;
}
// getters and setters methods ...
}
// Collection
class Page
{
private $id;
// has many elements (one-to-many)
private $elements = array();
public function __construct($id)
{
$this->id = $id;
}
public function setElements(array $elements)
{
foreach ($elements as $element) {
$object = new Element($element['id'], $element['title']);
$this->addToElements($object);
}
}
public function getElements()
{
return $this->elements;
}
public function addToElements(Element $element)
{
$this->elements[] = $element;
}
}
// DAO (Data access object)
class ElementDao
{
public function findAllByPageId($pageId)
{
$db = Database::getInstance();
$rows = $db->select('element');
return $rows;
}
}
class PageDao
{
private $elementDao;
public function __construct(ElementDao $elementDao)
{
$this->elementDao = $elementDao;
}
public function findById($id)
{
$db = Database::getInstance();
$row = $db->select('page')->where('id = ?', $id);
$page = new Page($row['id']);
$pageElements = $this->elementDao->findAllByPageId($id);
$page->setElements($pageElements);
return $page;
}
}
$elementDao = new ElementDao();
$pageDao = new PageDao($elementDao);
$page = $pageDao->findById(1);
foreach ($page->getElements() as $index => $element) {
echo $element->getTitle();
}