3

我正在构建我的个人 CMS,需要您的建议来组织核心功能和课程。我有文件夹:

/shared
   /classes
       DB.php
       Session.php
       Config.php
       ...
   /libraries
       Arrays.php
       DateTime.php
       Email.php
       ...

“类”文件夹中的文件包含核心类(每个文件一个类)。

现在的问题是关于 /libraries/ - 它们包含可以在任何类中使用的函数,有时它们使用另一个库中的一些其他函数,有时它们需要访问一些核心类。我应该将它们写为函数,还是将它们设为静态并包装在某个类中?基本上我到处都需要它们,但要让它们井井有条。

4

2 回答 2

1

我应该将它们写为函数,还是将它们设为静态并包装在某个类中?基本上我到处都需要它们,但要让它们井井有条。

你有没有研究过命名空间?将所有函数包装到命名空间中可能是您​​最好的选择。

于 2009-01-21T21:02:22.237 回答
0

我的建议是首先考虑 CMS 的架构目标。当然,这将是 100% 属于你的,但这并不意味着你不会因为不确定在哪里以及如何上钩、它做什么以及我如何从这里获得它而受苦。

这就是为什么我绝对不建议你让库调用库。从我的角度来看,除了应用程序流中的前几个核心类之外,您的任何类都不应该依赖于其他任何东西,因为您希望将工作分布在其他一些单一用途的自包含类中。你的核心类应该以单一性和原子性为目标。

我不知道你的架构模式将是什么(我假设它将是 MVC、HMVC 或 PAC),但我认为你最好先定义一些核心类 [/core],它们将为初始化奠定基础应用程序通过实例化一些库 [/libraries] 来解析传入的请求请求并在初始化请求的控制器 [/controllers] 之前执行一些默认任务。

图书馆应该有一个单一的目的。会话处理库应该单独处理会话、路由库路由等。最初,您可以创建基本控制器和基本模型并将其放入 [/core] 并让控制器 [/controllers] 和模型 [/models] 扩展您的基本来自 [/core] 的控制器和模型。

与往常一样,组件的耦合越少越好。一个好的解决方案将是轻量级、小型和广泛的。如果您将来更改任何设计思路,您可以简单地更改核心类并对整个应用程序产生巨大影响,而无需在其他地方进行任何进一步的更改,这将很有帮助。

于 2009-01-21T21:28:11.077 回答