Php 责任链实施
我已经用多个处理程序在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(); 我想以一种更具程序性的方式来做这件事,但我没能做到这一点。在数组中存储处理程序时,仅处理
$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是错误的..)