好吧,所以我在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包括,也許?)。
此外,應用程序的配置文件被加載加載框架的文件,這似乎有點怪我面前......
是否有製作一個簡單的方式,所以請求指定的應用程序,並且應用程序指定使用哪個框架,或者上述方式是最簡單的?
對不起,如果這是令人困惑!困惑我有點寫它;)
我已經看過Symphony,但我不認爲我足夠了解命名空間,以便能夠有效地跟蹤代碼2。我會繼續研究它。多個「index.php」文件存在的問題是,許多代碼會一遍又一遍地被複制,並且任何小的更改都需要在每個文件中複製。對不起,我不完全理解我的引導類的子分類是什麼意思,以定義在引導過程中應該做什麼。您能詳細說明一下嗎?感謝您的建議!而且我覺得我還不夠聰明,還沒有做出貢獻;) – manbeardpig 2010-07-20 18:32:57
看看Symfony的ProjectConfiguration。每個新項目都會有一個引導文件擴展它。 代碼重複可以用helpers和麪向對象的繼承來消除:) – yclian 2010-07-21 02:06:17
好吧,但讓我們說我的AppConfiguration類必須擴展配置。如果我在運行我的框架之前調用我的應用程序配置文件,那麼AppConfiguration將如何知道配置是什麼?配置不會是框架的/ classes/dir中的類嗎?這意味着它會根據應用程序想要運行的框架而變化...? – manbeardpig 2010-07-24 05:17:43