2010-07-18 32 views
1

好吧,所以我在PHP中創建了一個MVC框架,我希望它非常靈活。這一切都很好 - 我正在處理這個問題,事情進展順利(所以我不想使用Zend或其他預先存在的框架,哈哈!),但是我想讓框架和應用程序頗具活力。我會盡力解釋:首先,框架或應用程序?動態框架和應用程序文件夾

這裏有一個簡單的目錄結構:

- index.php   (wants to use app1 or app2 depending on domain name) 
- /app1    (wants to use framework 1.1) 
    - /config 
     - config.php 
- /app2    (wants to use framework 1.2) 
    - /config 
     - config.php 
- /framework_1.1 
- /framework_1.2 

引導文件的index.php接收所有傳入的請求。

:然後它會從 /app1/config/config.php/app2/config/config.php等,根據一定的條件,說..的HTTP主機加載某個應用程序的配置文件
// /index.php 
switch ($_SERVER[ 'HTTP_HOST' ]) { 
    case 'localhost': 
     $app_root = ROOT . 'app1/'; 
     break; 
    case 'site.com': 
     $app_root = ROOT . 'app2/'; 
     break; 
    default: 
     $app_root = ROOT . 'application/'; 
     break; 
} 
define('APP_ROOT', $app_root); 

的引導文件然後加載應用程序的配置文件:

// /index.php 
include(APP_ROOT . 'config/config.php'); 

一個$配置陣列會從應用程序的配置文件來恢復,這將表明在框架文件的位置。

// /app2/config/config.php 
$config['framework_root'] = '/framework_1.2/'; 

Bootstrap運行該框架。

// /index.php 
include($config['framework_root'] . 'config/bootstrap.php'); 

這是最好的方式去做這件事嗎?

與此唯一的問題是,的index.php文件必須瞭解所有可能的應用,因此用戶需要在的index.php(或編輯switch語句/ apps.php文件/index.php包括,也許?)。

此外,應用程序的配置文件被加載加載框架的文件,這似乎有點怪我面前......

是否有製作一個簡單的方式,所以請求指定的應用程序,並且應用程序指定使用哪個框架,或者上述方式是最簡單的?

對不起,如果這是令人困惑!困惑我有點寫它;)

回答

0

我用Symfony的大部分時間,所以回答你的問題時,我會不會有運用我的知識:

是否有做它,因此請求指定的簡單方法應用程序

使用多個「index.php」(或使用?app=xxx)與URL-rewrite組合。這使得事情變得更清潔。

此外,應用程序的配置文件必須加載框架的文件之前加載,這似乎有點奇怪我...

這不奇怪,你肯定需要配置引導您的框架之前發起一些狀態,但也許你可能要提供子類的框架的引導類的,要界定什麼應框架引導期間進行。

我建議您查看Symfony2以瞭解他們如何模塊化/管理庫和依賴關係。認真的說,沒有理由寫另一個框架,而是爲現有的框架做出貢獻 - 除非你發現他們不與你分享相同的願景。

+0

我已經看過Symphony,但我不認爲我足夠了解命名空間,以便能夠有效地跟蹤代碼2。我會繼續研究它。多個「index.php」文件存在的問題是,許多代碼會一遍又一遍地被複制,並且任何小的更改都需要在每個文件中複製。對不起,我不完全理解我的引導類的子分類是什麼意思,以定義在引導過程中應該做什麼。您能詳細說明一下嗎?感謝您的建議!而且我覺得我還不夠聰明,還沒有做出貢獻;) – manbeardpig 2010-07-20 18:32:57

+0

看看Symfony的ProjectConfiguration。每個新項目都會有一個引導文件擴展它。 代碼重複可以用helpers和麪向對象的繼承來消除:) – yclian 2010-07-21 02:06:17

+0

好吧,但讓我們說我的AppConfiguration類必須擴展配置。如果我在運行我的框架之前調用我的應用程序配置文件,那麼AppConfiguration將如何知道配置是什麼?配置不會是框架的/ classes/dir中的類嗎?這意味着它會根據應用程序想要運行的框架而變化...? – manbeardpig 2010-07-24 05:17:43