public function testChainOfResponsibility()
 {
     $expect = "Im handler 2";
     $handlers = new ConcreteHandlerA();
     $handlers->addHandler(new ConcreteHandlerB())->addHandler(new ConcreteHandlerC());
     $result = $handlers->sendRequest(2);
     $this->assertEquals($result, $expect);
 }
Example #2
0
class ConcreteHandlerA extends AbstractHandler
{
    public function sendRequest($message)
    {
        if ($message == 1) {
            echo __CLASS__ . "process this message";
        } else {
            if ($this->getNext()) {
                $this->getNext()->sendRequest($message);
            }
        }
    }
}
class ConcreteHandlerB extends AbstractHandler
{
    public function sendRequest($message)
    {
        if ($message == 2) {
            echo __CLASS__ . "process this message";
        } else {
            if ($this->getNext()) {
                $this->getNext()->sendRequest($message);
            }
        }
    }
}
$handler = new ConcreteHandlerA();
$handler->setNext(new ConcreteHandlerB());
//$handler->getNext()->setNext(...);
$handler->sendRequest(1);
$handler->sendRequest(2);
{
    public function sendRequest($message)
    {
        if ($message == 1) {
            echo __CLASS__ . " handles this request" . PHP_EOL;
        } else {
            if ($this->getNext()) {
                $this->getNext()->sendRequest($message);
            }
        }
    }
}
class ConcreteHandlerB extends AbstractHandler
{
    public function sendRequest($message)
    {
        if ($message == 2) {
            echo __CLASS__ . " handles this request" . PHP_EOL;
        } else {
            if ($this->getNext()) {
                $this->getNext()->sendRequest($message);
            }
        }
    }
}
$handler = new ConcreteHandlerA();
$handler2 = new ConcreteHandlerB();
$handler->setNext($handler2);
$handler->sendRequest(1);
$handler->sendRequest(2);
$handler->getNext();