Php 将应用程序与应用程序库、共享库、组件等分离

Php 将应用程序与应用程序库、共享库、组件等分离,php,model-view-controller,class,components,directory-structure,Php,Model View Controller,Class,Components,Directory Structure,我正在创建一个MVC应用程序框架,只使用我自己创建的库和组件(主要是学习经验),但我不太确定如何将每种库彼此分开 我们称我的申请为Cat 假设我正在创建一个名为Dog的库,它有点像Zend,并且充满了执行不同任务的不同组件(数据库类、DAL、用于确定从给定URL中选择哪些控制器的路由器等),并且将位于根/library/dir中 我还将创建一个特定于应用程序的应用程序库(可能包含FrontController或application之类的类,以帮助启动和配置应用程序)。这将位于root/app/

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

我们称我的申请为Cat

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

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

我想在这个应用程序和其他应用程序上使用Dog库,希望它与Cat无关,因此它可以在许多其他应用程序上使用

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

$database = new Dog_Database();
或者最好有一个纯粹扩展Dog_数据库类的Cat_数据库类?这意味着,如果需要的话,我可以稍后告诉Cat_数据库扩展雪貂_数据库


我想主要的问题是,我的应用程序应该直接从共享库调用东西,还是应该调用特定于应用程序的库类,如果需要的话,这些库类会从共享库中扩展出来?

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

对于这样一个广泛的问题,很难给出详细的建议。也许这些概念中的一些会对你有所帮助


我看了一下DI,我想我非常了解它。基本上,这个想法是创建一个对象并将启动的对象传递给它,而不是让对象本身启动其他对象,对吗?你说我不能让应用程序库扩展框架类,因为我想在其他地方重用应用程序,但实际上应用程序本身不需要与其他框架一起工作;我希望该框架能够与其他应用程序协同工作。那么实用程序类呢?Dog_Url::getDomain()等。。?框架文件(index.php、boostrap.php)是否应该使用这些以及控制器/模型?这并不能完全回答我的问题,但它有帮助,所以我想我会“接受”这个答案。如果其他人有任何答案,请随时发布。(或者回答我上次评论中的问题)。谢谢埃沃德!