[有人可以帮我有关mvc php [关闭]

问题描述 投票:-7回答:1
这是我的app.php,也许问题在这里

class App{ protected $controller = 'Home'; protected $method = 'index'; protected $params = []; public function __construct(){ $url = $this->purseurl(); if (file_exists('../app/controllers' . $url[0] . '.php')){ $this->controller = $url[0]; unset($url[0]); } require_once '../app/controllers/' . $this->controller . '.php'; $this->controller = new $this->controller; if(isset($url[1])){ if(method_exists($this->controller, $url[1])){ $this->method = $url[1]; unset($url[1]); } } if(!empty($url)){ $this->params = array_values($url); } call_user_func_array([$this->controller, $this->method], $this->params); } public function purseurl(){ if(isset($_GET['url'])){ $url = rtrim($_GET['url'], '/'); $url = filter_var($url, FILTER_SANITIZE_URL); $url = explode('/', $url); return $url; } } }

和此home.php或此处

class Home{ public function index(){ echo 'home/index'; } }

以及此about.php或此处

class about{ public function index(){ echo 'about/index'; } public function page(){ echo 'about/page'; } }

和索引可能在这里

require_once '../app/init.php'; $app = new App;

当我在url上写输出的原因时>]

echo'home / index';不回显“关于/索引”;

可以因为这个原因我无法帮助我学习吗?

这是我的app.php,也许问题出在这里,类App {protected $ controller ='Home'; protected $ method ='索引';受保护的$ params = [];公共功能__construct(){$ ...

php url-routing
1个回答
0
投票
假设您为$_GET['url']提供的是类似/about/index而不是about/index的东西,那么错误代码

可以

App::parseUrl()方法中。在执行explode('/', $url)的地方,您会得到一个与['', 'about', 'index']类似的数组,这与预期的不同,即['about', 'index'],因此不满足App::__construct中的第一个条件,因为您要检查的文件不存在。
© www.soinside.com 2019 - 2024. All rights reserved.