将应用程序与应用程序库,共享库,组件等分开

时间:2010-06-19 09:49:19

标签: php model-view-controller class components directory-structure

我正在创建一个MVC应用程序框架,只使用我自己创建的库和组件(主要是学习经验),但我不太确定如何将每种库彼此分开。

我们将致电我的申请Cat。

让我们说我正在创建一个名为Dog的库,它有点像Zend,并且充满了执行不同任务的不同组件(数据库类,DAL,路由器,用于确定哪些控制器可以从给定的URL中进行选择,等),并将位于root / library / dir。

我还将创建一个特定于应用程序的应用程序库,(可能包含类似FrontController或Application的类,以帮助启动和配置应用程序)。这将位于root / app / library /

我想在这个应用程序和其他应用程序上使用Dog库,并希望它独立于Cat,因此它可以用于许多其他应用程序。

在我的Cat应用程序中,假设我创建了一个新的数据库对象。我应该写作:

$database = new Dog_Database();

或者拥有一个纯粹扩展Dog_Database类的Cat_Database类会更好吗?这意味着我可以稍后告诉Cat_Database在需要时扩展Ferret_Database ......

我想主要的问题是,我的应用程序是应该直接从共享库中调用内容,还是应该调用特定于应用程序的库类,如果需要,它们又会从共享库中扩展出来?

1 个答案:

答案 0 :(得分:1)

我觉得你有点回答了自己的问题。你说你想让狗独立于猫。这意味着,对我来说,在两者之间使用大量的依赖注入而不是很多继承或直接调用。如果您想在框架的其他地方重用应用程序库,则无法使您的应用程序库从框架扩展类。

很难对像这样的广泛问题提出详细的建议。也许这些概念中的一些可以帮助你。

Dependency Injection

Programming to an interface