问题描述
给您一个简短的观点:我正在尝试根据条件进行重定向。如果请求满足给定目标的条件,您将重定向到特定目标。
我有Destination
模型,该模型具有许多条件(条件模型)。我有很多条件,它们扩展了基本条件模型,例如DateCondition
,LocationCondition
等(通过政治形态关系制成)。每个条件类型都应具有“服务”,以告知给定条件是否匹配请求。示例DateCondition
应该具有自己的DateConditionMatcher
,该实现实现ConditionMatcherInterface
。
(仅public function match($condition,$request)
)。
我想使用SOLID中的Open Closed原理编写它。首先,我想直接向条件模型添加getMatcher()
函数,并为每种条件类型返回不同的ConditionMatcher
,但是某些ConditionMatchers需要在构造函数中传递其他一些服务,因此这迫使我也将它们注入Condition
的模型是很糟糕的。
也许在ServiceProvider中使用上下文绑定可以解决此问题,但如何解决? 我不知道如何将Model耦合到正确的一个ConditionMatcher,然后像这样自由地使用它:
foreach ($destination->conditions as $condition){
$isMatched = $this->conditionMatcher->match($condition,$request);
}
要始终在$ this-> conditionMatcher下具有正确的ConditionMatcher。 我希望有人能理解我不太清楚的信息。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)