Php 责任链实施

Php 责任链实施,php,chain-of-responsibility,Php,Chain Of Responsibility,我已经用多个处理程序在PHP中实现了责任链模式。正如模式所示,我可以如下链接处理程序: $handler = new Handler(); $handler->chainNext(new HandlerOne)->chainNext(new HandlerTwo)->chainNext(new HandlerThree); $result = $handler->handle(); 我想以一种更具程序性的方式来做这件事,但我没能做到这一点。在数组中存储处理程序时,仅处理

我已经用多个处理程序在PHP中实现了责任链模式。正如模式所示,我可以如下链接处理程序:

$handler = new Handler();
$handler->chainNext(new HandlerOne)->chainNext(new HandlerTwo)->chainNext(new HandlerThree);
$result = $handler->handle();
我想以一种更具程序性的方式来做这件事,但我没能做到这一点。在数组中存储处理程序时,仅处理(执行)第一个和最后一个处理程序


你对这个项目有什么建议吗?这样做的主要原因是:我永远不知道需要执行多少处理程序(1..n)。我需要它是动态的,因为它们将从数据库中读取。

您需要在下一个循环中使用$元素。像这样:

$handler = new Handler();
$last = $handler;
foreach ($handlers as $element) {
    $last->chainNext($element);
    $last = $element;

}
$result = $handler->handle();

代码假设$handlers已经包含对象实例(那么新的$element是错误的。)

您需要在下一个循环中使用$element。像这样:

$handler = new Handler();
$last = $handler;
foreach ($handlers as $element) {
    $last->chainNext($element);
    $last = $element;

}
$result = $handler->handle();
代码假设$handlers已经包含对象实例(那么新的$element是错误的..)