Вы должны понимать, что MVC Patter в PHP обычно устанавливается так:
У вас есть 2 ключевые переменные:
И они всегда по умолчанию:
- класс = индекс
- метод = индекс
Поэтому, когда параметр class
передается в URI, он переопределяет значение по умолчанию, поэтому при использовании index.php?class=view
вышеприведенное становится:
- класс = вид
- метод = индекс
Там вы запускаете класс view.php, инициализируете класс представления в объект и выполняете метод следующим образом:
class View/*_Controller extends Controller*/
{
public function index(){}
}
Любые другие переданные переменные будут доступны через запрос GET или POST.
Следует также отметить, что это обычно обрабатывается через URI в синтаксисе URL, поэтому следующий index.php?action=view&method=download
становится /view/download/
Все, что находится внутри URI, после того, как класс / метод будет отправлен методу, пример ниже.
/view/download/id/browser
Это выполнит следующий метод и передаст значения переменных в контексте.
class View/*_Controller extends Controller*/
{
public function download($id,$direction)
{
}
}
Теперь я знаю, что это не относится к вашему вопросу, но я думаю, что вы поступаете неправильно, и это должно помочь вам начать строить свою структуру в управляемую структуру.
Обновление
Контроллер, инициализированный GET / POST с использованием маршрутизатора, маршрутизатор - это класс, который обнаруживает класс / метод по URI, а затем находит правильный контроллер и выполняет его вместе со своим методом.
Пример роутера выглядит так:
class Router
{
//Params
public $route;
public static function CreateRoute($route = false)
{
return new Router($route);
}
public function __construct($route = false)
{
if($route !== false)
{
$this->route = $route;
}else
{
$this->route = $_SERVER['REQUEST_URI'];
}
/*
* The route would be parsed so that the following are matched
* {/class}{/method}{/param1}{/param1}
* /view/download/12/direct | as example
*/
}
public function run()
{
/*
* Here you would do the following:
* Validate the class to make sure no one is triggering an LFI
* Make sure the class file exists within the directory
* Include the class file and create an instance of it
* Execute the method sending in the params.
*/
}
}
Использование примерно так:
$Route = Router::CreateRoute(); //AutoDetect
$Route->run();
Взгляните на следующее изображение, может помочь вам понять.
