Php 如何在MVC中获取$\u获取参数
伙计们,请提前为我的英语复习。有一个MVC框架,在上面做一个网站。 .htaccess文件:Php 如何在MVC中获取$\u获取参数,php,.htaccess,Php,.htaccess,伙计们,请提前为我的英语复习。有一个MVC框架,在上面做一个网站。 .htaccess文件: AddDefaultCharset utf-8 Options +FollowSymLinks RewriteEngine on RewriteBase / ErrorDocument 404 /404.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ inde
AddDefaultCharset utf-8
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
ErrorDocument 404 /404.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Router.php:
class Router
{
private $routes;
public function __construct()
{
$routesPath = ROOT.'/config/routes.php';
$this->routes = include($routesPath);
}
// Return type
private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public function run()
{
$uri = $this->getURI();
foreach ($this->routes as $uriPattern => $path) {
if(preg_match("~$uriPattern~", $uri)) {
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
$segments = explode('/', $internalRoute);
//Search name for controller we need
$controllerName = array_shift($segments).'Controller';
$controllerName = ucfirst($controllerName);
//Находим название action
$actionName = 'action'.ucfirst((array_shift($segments)));
$parameters = $segments;
$controllerFile = ROOT . '/controllers/' .$controllerName. '.php';
if (file_exists($controllerFile)) {
include_once($controllerFile);
}
$controllerObject = new $controllerName;
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
if ($result != null) {
break;
}
}
}
}
}
routes.php(控制器和路由的数组)
我认为您可以更改路由器::getURI()
以在返回查询字符串之前去掉任何查询字符串。未经测试,但大致如下:
private function getURI()
{
$uri = '';
if (!empty($_SERVER['REQUEST_URI'])) {
$uri = $_SERVER['REQUEST_URI'];
}
if (($cutoff = strpos($uri, '?')) !== false) {
$uri = substr($uri, 0, $cutoff);
}
return trim($uri, '/');
}
private function getURI()
{
$uri = '';
if (!empty($_SERVER['REQUEST_URI'])) {
$uri = $_SERVER['REQUEST_URI'];
}
if (($cutoff = strpos($uri, '?')) !== false) {
$uri = substr($uri, 0, $cutoff);
}
return trim($uri, '/');
}