2009-01-21 50 views
3

我正在建立我的个人CMS并需要你的建议来组织核心功能和课程。 我有文件夹:建立个人CMS - 课程和图书馆

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

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

现在的问题是关于/ libraries/- 它们包含可用于任何类的函数,有时它们会使用另一个库中的其他函数,有时它们需要访问某个核心类。 我应该只是将它们写成函数,或者将它们设置为静态并包装在某个类中? 基本上我需要他们无处不在,但保持他们组织。

回答

0

我的建议是先思考CMS的架构目标。当然,这将会是你的100%,但这并不意味着你不会因为不知道什么时候会在哪里以及如何吸引什么而陷入困境,这会做什么以及如何从这里获得。

这就是为什么我绝对不会建议你有库调用库。从我的角度来看,除了应用程序流中的前几个核心类以外,您的任何类都不应该依赖于其他任何内容,因为您希望将该工作分发到其他单个独立的自包含类中。你应该瞄准你的核心课程的奇点和原子性。我不知道你的架构模式会是什么(我会假设它将是MVC,HMVC或PAC),但我认为最好先定义一些核心类[/ core]在初始化所请求的控制器[/控制器]之前,通过实例化某些库[/库]来初始化应用程序的基础,这些库用于解析传入请求请求并执行一些默认任务。

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

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

+0

谢谢你的描述性答案 – 2009-01-22 08:10:02

1

我应该只是将它们写成函数, 或使它们变为静态并包装在某些 类中?基本上我需要它们到处都是 ,但要保持它们的组织。

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