【发布时间】:2010-07-18 19:20:06
【问题描述】:
好的,所以我正在用 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' );
将从应用程序的配置文件中返回一个 $config 数组,该数组将指示框架文件的位置。
// /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 语句 (或者 /index.php 包含的 /apps.php 文件,也许?)。
此外,必须在加载框架文件之前加载应用程序的配置文件,这对我来说似乎有点奇怪......
有没有一种简单的方法可以让请求指定应用程序,应用程序指定要使用的框架,还是上述方法最简单?
对不起,如果这令人困惑!写得让我有点困惑;)
【问题讨论】:
标签: php model-view-controller web-applications frameworks