catalog/controller/startup/router.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
class ControllerStartupRouter extends Controller {
public function index() {
//custom route
if (!isset($this->request->get['route'])) {
//自定义路由
$customRoutes = require_once(DIR_APPLICATION . 'routes.php');
if ($customRoutes) {
$request_uri = strtolower($_SERVER["REQUEST_URI"]);
$pattern = "/\{(.*?)\}/i";
$replace_pattern = '(.*?)';
foreach ($customRoutes as $request_key => $customRoute) {
if ($request_key == $request_uri) {
$this->request->get['route'] = $customRoute;
} else {
//匹配出控制器
$request_match = [];
$new_pat = preg_replace($pattern, $replace_pattern, $request_key);
$new_pat = "/" . str_replace('/', '\/', $new_pat) . "/i";
preg_match($new_pat, $request_uri, $request_match);
if ($request_match) {
$this->request->get['route'] = $customRoute;
//匹配出参数
preg_match_all($pattern, $request_key, $param_matches);
if ($param_matches && count($param_matches) >= 2) {
foreach ($param_matches[1] as $i => $request_key) {
if (!empty($request_match[$i + 1])) {
$this->request->get[$request_key] = $request_match[$i + 1];
}
}
}
}
}
}
}
}
// Route
if (isset($this->request->get['route']) && (string)$this->request->get['route'] != 'startup/router') {
$route = (string)$this->request->get['route'];
} else {
$route = $this->config->get('action_default');
}
// Sanitize the call
$route = preg_replace('/[^a-zA-Z0-9_\/]/', '', $route);
// Trigger the pre events
$result = $this->event->trigger('controller/' . $route . '/before', array(&$route, &$data));
if (!is_null($result)) {
return $result;
}
// We dont want to use the loader class as it would make an controller callable.
$action = new Action($route);
// Any output needs to be another Action object.
$output = $action->execute($this->registry);
// Trigger the post events
后面还有 9 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
