【发布时间】:2012-09-07 22:52:11
【问题描述】:
所以我开始更深入地研究 MVC(真正的 MVC,而不是框架 MVC),并且我正在尝试开发一个小型框架。我通过阅读 Symphony 和 Zend 等其他框架来工作,了解它们是如何工作的,并尝试自己实现它。
我卡住的地方是 URL 路由系统:
<?php
namespace Application\Common;
class RouteBuilder {
public function create($name, $parameters) {
$route = new Route($name);
$route->resource = array_keys($parameters)[0];
$route->defaults = $parameters["defaults"];
$notation = $parameters["notation"];
$notation = preg_replace("/\[(.*)\]/", "(:?$1)?", $notation);
foreach ($parameters["conditions"] as $param => $condition) {
$notation = \str_replace($param, $condition, $notation);
}
$notation = preg_replace("/:([a-z]+)/i", "(?P<$1>[^/.,;?\n]+)", $notation);
//@TODO: Continue pattern replacement!!
}
}
/* How a single entry looks like
* "main": {
"notation": "/:action",
"defaults": {
"resource" : "Authentication",
},
"conditions": {
":action" : "(login)|(register)"
}
},
*/
我只是无法正确地缠绕它。这里的应用程序工作流程是什么?
模式生成了,大概是Route对象要保存在Request对象下什么的,然后呢?它是如何工作的?
P.S. 在这里寻找一个真实的、解释清楚的答案。我真的很想了解这个主题。如果有人花时间写一个真正详尽的答案,我将不胜感激。
【问题讨论】:
-
看看我的博客:www.ganymedes.be
-
@JvdBerg:我看不到任何关于路由本身的信息,你有更具体的链接吗?还有一个提示,在链接前加上 http:// 以便解析它们,这样您就可以获得不错的 SEO 奖励:P
-
为什么不看看现有的框架,例如 Kohana 或 Fuel?
-
我从我的框架中发布了路由器类。希望对您有所帮助。
-
@MrtiBriedis:我有,请阅读问题。我还是没明白(如果我没有用尽所有其他方法,我不会在这里问。
标签: php model-view-controller routes