设计一个支持覆盖、file_exists() 和 include 的系统?

发布于 2024-12-11 01:07:37 字数 365 浏览 0 评论 0原文

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

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

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

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

谢谢!

I have a very module-based architecture in my infosystem that is installed to hundreds of clients. Updates are loaded to those clients automatically. But some of these clients have custom functionality that I do not want to add footprint to every other client out there.

Thus I want to implement overrides into the system, so that certain modules act a little differently from the main system.

First idea I had was about having bunch of file_exists() checks before including files and classes, to see if there is an override version of it in overrides directory, but the system loads a lot of files, which would mean there would have to be around twenty to thirty file_exists() checks per page load (this includes files like CSS and JavaScript too).

Would that be appropriate or is there a better way to design an infosystem that has 99% of the clients on one codebase and 1% using overrides on some of the functionality?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甩你一脸翔 2024-12-18 01:07:37

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

I agree with user973254 and Michael Mior's comments, and think that you should combine them: when installing, perform the checks for the overrides, then use the info to generate a config script - just store an array of $modules['ModuleName'] = '/File/Path'. Then, whenever you load a module call include $modules['ModuleName'];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文