【问题标题】:Designing a system that supports overrides, file_exists() and includes?设计一个支持覆盖、file_exists() 和包含的系统?
【发布时间】:2011-12-11 06:40:06
【问题描述】:

我的信息系统中有一个非常基于模块的架构,已安装到数百个客户端。更新会自动加载到这些客户端。但是其中一些客户端具有自定义功能,我不想将足迹添加到那里的所有其他客户端。

因此我想在系统中实现覆盖,以便某些模块的行为与主系统略有不同。

我的第一个想法是在包含文件和类之前进行一堆 file_exists() 检查,以查看在 overrides 目录中是否有它的覆盖版本,但是系统加载了很多文件,这意味着会有每个页面加载必须进行大约 20 到 30 个 file_exists() 检查(这也包括 CSS 和 JavaScript 之类的文件)。

这是否合适,或者是否有更好的方法来设计一个信息系统,让 99% 的客户在一个代码库上,1% 的客户在某些功能上使用覆盖?

谢谢!

【问题讨论】:

  • 仅在安装/重新安装时检查它,我认为这种检查不会是性能问题
  • 您可以考虑拥有一个指定覆盖的配置文件。然后你就会确切地知道需要加载什么。

标签: php architecture overriding scalability


【解决方案1】:

我同意 user973254Michael Mior 的 cmets,并认为您应该将它们结合起来:安装时,执行覆盖检查,然后使用信息生成配置脚本 - 只需存储 $modules['ModuleName'] = '/File/Path' 的数组。然后,每当你加载一个模块调用include $modules['ModuleName'];

【讨论】:

  • 我正是这样做的,并节省了几毫秒的执行时间。同样的原则也适用于其他一些只能在更新后才能改变的东西,所以这是一个很好的方法。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2015-07-02
  • 2017-06-15
  • 2011-11-17
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
相关资源
最近更新 更多