4

我創建一個MVC應用程序框架,只用libararies和組件,我創建自己(主要是學習經驗),但我不太清楚如何的每個獨立相互之間的一種圖書館。從應用程序庫,共享庫,組件等中分離出應用

我們會打電話給我的應用程序貓。

可以說我創建了一個名爲Dog的庫,它可以像Zend一樣,充滿了完成不同任務的不同組件(數據庫類,DAL,路由器,用於計算從給定URL中選擇哪些控制器等),並將位於根/庫/目錄。

我也可以創建一個應用程序庫,這將是應用特定的,(可能包含如下FrontController或應用程序類,以幫助啓動和配置應用程序)。這將位於根目錄/應用程序/庫/

我想在這個應用程序和其他應用程序上使用Dog庫,並希望它可以獨立於Cat,因此它可以用於許多其他應用。

在我的貓的應用程序,可以說我創建一個新的數據庫對象。我應該寫作:

$database = new Dog_Database(); 

或者是否最好有一個Cat_Database類來純粹擴展Dog_Database類?這意味着我可以稍後告訴Cat_Database擴展Ferret_Database,如果需要的話...

我想主要問題是,我的應用程序應該直接從共享庫中調用某些東西,還是應該調用應用程序特定的庫類,如果需要,它又從共享庫擴展而來?

回答

1

我覺得你有點回答了自己的問題。你說你想讓狗獨立於貓。這意味着,對我來說,在兩者之間使用大量的依賴注入,而不是大量的繼承或直接調用。如果您想在其他位置重新使用應用程序庫,則無法在框架中創建應用程序庫擴展類。

它很難以這樣一個廣泛的問題提供詳細的建議。也許這些概念中的一些會幫助你。

Dependency Injection

Programming to an interface

+0

我接過來一看到DI,我想我理解得很好。基本上這個想法是創建一個對象並將啓動的對象傳遞給它,而不是讓對象本身啓動其他對象,更正?你說我不能讓應用程序庫擴展框架類,因爲我想在其他地方重新使用應用程序,但實際上應用程序本身不需要與其他框架一起工作;我想讓框架與其他應用程序一起工作。而實用工具類呢? Dog_Url :: getDomain()等..?框架文件(index.php,boostrap.php)是否應該使用這些文件以及控制器/模型? – manbeardpig 2010-06-22 17:17:28

+0

這並沒有完全回答我的問題,但它有幫助,所以我認爲我會'接受'這個答案。如果其他人有任何答案,請隨時張貼。 (或回答我上次評論的問題)。感謝Evord! – manbeardpig 2010-07-09 16:45:04