Логика MVC — где именно обрабатывать GET параметры и как передавать?
Разбираюсь с ООП, кое в чём сложно. Например сейчас не совсем ясно, где именно делать получение GET данных
1. Есть единая точка входа - index.php
2. bootstap.php - подключается в - index.php
3. Класс Router.php - подключается в - bootstap.php, как я понимаю, роутер, это уже часть контроллера. В нём парсится URI и в зависимости от параметров подключается определённый контроллер и запускается нужный action
4. Сам контроллер, их много и они разные. Например сейчас нужно обработать ajax запрос на поиск названия города - contr_ajax.class.
5. Модель "городов", подключается в контроллере ajax запросов
-- У всех контроллеров типа contr_xxxxxx.class есть один предок \core\Controller.class - но я его сейчас никак не использую
Вопрос состоит в "зависимости" классов от глобальных/внешних данных. Сначала я получал GET в самом классе "ajax запросов" contr_ajax.class - в нужном action, при этом конструктор класса простой и без параметров __construct()
Сейчас стал сомневаться, правильно ли это? Возможно это нужно делать уровнем выше, например в роутере или общем для всех контроллере (\core\Controller.class)? Помогите разобраться пожалуйста.
так, а где правильно заносить данные из GET в переменную. Уже в самом классе contr_ajax.class или передавать её в конструктор класса или делать глобальную (что вроде бы не советуют делать).
class Contr_ajax extends Controller{
function __construct()
{
parent::__construct();
}
public function getCities()
{
$cityName = Input::get('cityName');
}
}
Можно в классе Input держать кэш обработанных переменных
class Input
{
static protected $getCache = [];
public static function get($var)
{
if(isset(self::$getCache[$var]))
return self::$getCache[$var];
if (!isset($_GET[$var]))
return FAlSE;
self::$getCache = htmlspecialchars($_GET[$var]);
return self::$getCache[$var];
}
}