On 26-04-2013 17:18, Bertel Lund Hansen wrote:
> Martin skrev:
>
>> Klon opstod pga. den måde PHP arbejder med sine interne variabler.
>
> Jo, men hvornår har man overhovedet brug for at kopiere et
> objekt?
>
Forstil dig en template engine til alt dit HTML - i denne injecter du
forskellige templates, i dette er det en tabel, hvor der er noget
konfiguration du gerne vil have i begge tabeller, fx hele din <thead>
eller <tfoot>.
Et andet eksempel kunne være en shop eller lign.
På din liste visning af produkter, der injecter du produkter ind i
listevisningen - men du vil jo gerne have det samme design på alle dine
produkter - sådan noget som købs knappen eller lign.
class Html // Vores placeholder til Html
{
protected $html = array();
public function addHtml(Template $data) { $this->html[] = $data; }
public function __toString() {
return implode('', $html);
}
}
class Template // Vores html bygger
{
protected $data;
public function setTemplate($template) {
$this->template = $template;
}
public function addData(array $data) {
$this->data = $data;
}
public function __toString() {
return 'html';
// Her vil vi selvfølgelig bygge vores html udfra templaten
}
}
$html = new Html;
$list = new Template;
$list->setTemplate('list.phtml'); // Vores Html tabel template
// og en masse andet konfiguration
// fx headers, footer etc.
$data = array(array('Name' => 'Foo'), array('Name' => 'Bar'));
$list->addData($data);
$html->addHtml($list);
$newlist = $list;
$newdata = array(array('Name' => 'Baz'));
$newlist->addData($newdata);
$html->addHtml($newlist);
echo $html;