Когда я набираю этот адрес:
http://localhost/gamelvl/world-of-tanks/tankguide/
Я могу войти в вид на гидролог. Теперь внутри этой папки находится еще одна папка с именем ussr, но когда я создаю контроллер и модель для ussr, я не могу ввести ее с этим адресом:
http://localhost/gamelvl/world-of-tanks/tankguide/ussr/
Теперь кто-нибудь может дать мне инструкции о том, является ли это правильным или другими решениями для этого?
приложение маршрутизации
<?php
class App
{
public $controller = 'index';
public $method = 'index';
public $params = [];
function __construct()
{
if (isset($_GET['url'])) {
$url = $_GET['url'];
$url = $this->parseUrl($url);
$this->controller = $url[0];
unset($url[0]);
if (isset($url[1])) {
$this->method = $url[1];
unset($url[1]);
}
$this->params = array_values($url);
}
$controllerurl = 'controllers/' . $this->controller . '.php';
if (file_exists($controllerurl)) {
require($controllerurl);
$object = new $this->controller;
$object->model($this->controller);
if (method_exists($object, $this->method)) {
call_user_func_array([$object, $this->method], $this->params);
}
}
}
function parseUrl($url)
{
filter_var($url, FILTER_SANITIZE_URL);
$url = rtrim($url, '/');
$url = explode('/', $url);
return $url;
}
}
?>
контроллер танковода
<?php
class Tankguide extends Controller
{
function index()
{
$this->view('tankguide/index');
}
}
?>
основной контроллер
<?php
class Controller
{
function __construct()
{
}
function view($viewUrl,$data=[])
{
require('header.php');
require('views/' . $viewUrl . '.php');
require('footer.php');
}
function model($modelUrl)
{
require('models/model_' . $modelUrl . '.php');
$classname = 'model_' . $modelUrl;
$this->model = new $classname;
}
}
?>
структура проекта
if (method_exists($object, $this->method))
вернет false для данного URL, потому что он ищет метод ussr для класса Tankguide. Либо создайте метод ussr для этого класса
Других решений пока нет …