【发布时间】:2011-01-20 10:34:39
【问题描述】:
我正在尝试创建简单的 MVC 框架,但我遇到了依赖项。
这就是我现在拥有的:
$config = new Config();
$database = new Database($config);
$uri = new Uri('article/5');
$request = new Request($uri);
$response = new Response;
$router = new Router;
$dispatcher = new Dispatcher($request, $response, $router);
$dispatcher->dispatch(); // Routing, instantiate controller, execute action, send response
问题是:任何对象如何访问任何依赖项?
一些例子:
- 控制器可能需要 Config 来获取输出格式选项。
- Mapper 可能需要数据库来执行查询。
- 任何控制器/助手都需要访问日志。
- Helper 可能需要任意数量的依赖项(例如:Uri_Helper 需要路由器)。
我能想到的唯一可能是使用注册表,但这违反了得墨忒耳法则(问问你真正需要什么)。
【问题讨论】:
标签: php model-view-controller dependency-injection