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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。