<?php

/* Slozitejsi
/*
    Protože třída DebuggerComposite se navenek chová jako každý jiný objekt implementující
    rozhraní Debugger, můžete ji použít i pro vytváření složitějších stromových
    struktur
*/

$debuggerEcho = DebuggerEcho::getInstance();
$debuggerLog1 = DebuggerLog::getInstance('./debug1.log');
$debuggerLog2 = DebuggerLog::getInstance('./debug2.log');

$debuggerEmail1 = DebuggerEmail::getInstance('user1@example.com');
$debuggerEmail2 = DebuggerEmail::getInstance('user2@example.com');
$debuggerEmail3 = DebuggerEmail::getInstance('user3@example.com');

$compositeLog = new DebuggerComposite();
$compositeLog->addDebugger($debuggerLog1);
$compositeLog->addDebugger($debuggerLog2);

$compositeMail = new DebuggerComposite();
$compositeMail->addDebugger($debuggerMail1);
$compositeMail->addDebugger($debuggerMail2);
$compositeMail->addDebugger($debuggerMail3);

$composite = new DebuggerComposite();
$composite->addDebugger($compositeLog);
$composite->addDebugger($debuggerEcho);
$composite->addDebugger($compositeMail);