Когда я нажимаю на ссылку на моем index.php, которая идет на страницу users.php, я получаю те же данные, что и на index.php, и они должны отличаться.Мой маршрут ссылки на users.php хорош, и я думаю, что проблема в основном контроллере (Core.php), я просто не могу найти проблему.Также имя контроллера - UserController, и когда я изменяю имя users.php на usercontroller.php и изменяю href также на usercontroller, тогда он работает просто отлично.Вот мой код:
структура кода:
Project
|
+-- App
| |
| +-- Controllers
| |
| +-- PageController.php
| +-- UserController.php
| +-- Libraries
| |
| +-- Core.php
| +-- Controller.php
| +-- Views
| |
| +-- pages
| |
| +-- users.php
| +-- index.php
index.php:
<?php require '../App/Views/includes/header.php' ; ?>
<h1>Homepage!!!</h1>
<a href="users">Users</a>
<?php require '../App/Views/includes/footer.php' ; ?>
PageController.php
<?php
namespace App\Controllers;
use App\Libraries\Controller;
class PageController extends Controller
{
public function index()
{
$this->view('pages/index');
}
}
UserController.php:
<?php
namespace App\Controllers;
use App\Libraries\Controller;
class UserController extends Controller
{
public function index()
{
$this->view('pages/users');
}
}
Controller.php:
<?php
namespace App\Libraries;
class Controller
{
public function model($model)
{
require_once '../App/Models/' . $model . '.php';
return new $model();
}
public function view($view, $data = [])
{
if (file_exists('../App/Views/' . $view . '.php')) {
require_once '../App/Views/' . $view . '.php';
} else {
die("View does not exist!!!");
}
}
}
Core.php
<?php
namespace App\Libraries;
class Core
{
protected $currentController = 'App\Controllers\PageController';
protected $currentMethod = 'index';
protected $params = [];
public function __construct()
{
$url = $this->getUrl();
if (file_exists('../App/Controllers/' . ucwords($url[0]). '.php')) {
$this->currentController = ucwords($url[0]);
if (isset($url[0])) {
$this->currentController = '\App\Controllers\\' . ucwords($url[0]);
}
unset($url[0]);
}
$this->currentController = new $this->currentController;
if (isset($url[1])) {
if (method_exists($this->currentController, $url[1])) {
$this->currentMethod = $url[1];
unset($url[1]);
}
}
$this->params = $url ? array_values($url) : [];
call_user_func_array([$this->currentController, $this->currentMethod], $this->params);
}
public function getUrl()
{
if (isset($_GET['url'])) {
$url = rtrim($_GET['url'], '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
return $url;
}
}
}