我们正在使用Laravel为我们公司建立一个新的CMS。
为了帮助维护代码,我们决定将常用的功能部分放入不同的包中。例如。博客包,画廊包等...
我理想的是,管理区域能够找到某种类型的已安装软件包,并根据它们提供的内容构建导航。
实现这一目标的最佳方法是什么?有没有办法让安装的软件包在管理软件包中注册?我真的不希望管理包必须去寻找其他包。
所有想法都受到赞赏。
答案 0 :(得分:0)
如果你制作了包装插件,你可以做你想要的。除了plug-ins are usually some variant of the Strategy pattern之外,我认为你本身并不需要设计模式。
将基于插件接口的现有实现(即,现有策略)来构造导航。
反射(如果你可以在PHP中使用它)可以让你找到容易“安装”的东西。但是为了安全起见,最好有一种更正式的方式来安装软件包(否则,如果只使用反射,理论上可以执行任何兼容的插件代码)。
答案 1 :(得分:0)
创建一个注册类,制作一个 - > registerNavigation($ controller,$ text)项,然后在子包'service provider :: boot()函数中调用registerNavigation方法 子包将按照它们在laravel的服务提供商中列出的顺序进行注册。 当然,您可以将它视为您想要的复杂或简单。 :)