Сыну больше чем мне? :D
Да вы у нас скорострел… Как я погляжу…
И ламер наблюдается пока один — это конкретно вы.
Основная ваша проблема в том, что знаний у вас близко к нулю.
Рассуждать о безопасности с таким кодом…
// это вызов в контроллере
$category_info = $this->model_catalog_category->getCategory($path_id);
// а это сам метод...
public function getCategory($category_id) {
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");
return $query->row;
}
Ну, наверное, конечно можно… местами…
Но я бы не стал
Реализация opencart имеет право на жизнь как коробочное нерасширяемое приложение для конечного пользователя.
Когда вся кастомизация заключается в смене «шкурки».
Вопрос «безопасности» очень сильно открыт…
Вопрос расширяемости… увольте.
Не, явное лучше неявного… Но не до такой же степени…
Кто мешал сделать так?
$translator = new Translator($this->request->get('lang'));
// спорный момент, ну ок, пусть у нас маппер попутно дергает еще и переводчик
// хотя лично я бы вопрос перевода оставил бы на намного более поздний этап
// при выводе в шаблоне
$mapper = new ProductTemplateMapper($translator);
$queryMapper = new ProductQueryMapper($translator);
$validator = new ProductQueryValidator($translator);
$data = [];
$data = $mapper->map($data, $product_info);
$queryData =$queryMapper->map([], $this->request->getQueryParams());
if (!$validator->isValid($queryData)) {
throw new Exception($validator->getMessage());
}
$data = $mapper->map($data, $queryData)
Йо, диджей…
Мы имеем переиспользуемый код.
Мы не имеем лапши в контроллере и логика стала намного чище и прозрачнее. Буде нам захочется деталей мы преспокойно погрузимся в мапперы и валидатор.
Мы можем валидировать данные в другом месте тем же самым кодом.
Мы можем маппить одни структуры и входные параметры в другие где нам угодно, если захотим.
Безопасность?
Мы добавили валидацию данных, которую я не видел в исходном коде…
Осталось написать корректно валидатор.
Потому что всего вашего образования — два класса и коридор.
Если я начну 5-тилетним задвигать теорию суперструн для них это тоже будет выглядеть бредом, как и для вас.
А какие громкие слова об архитектуре… :D
Да вы у нас скорострел… Как я погляжу…
И ламер наблюдается пока один — это конкретно вы.
Основная ваша проблема в том, что знаний у вас близко к нулю.
Рассуждать о безопасности с таким кодом…
Ну, наверное, конечно можно… местами…
Но я бы не стал
Реализация opencart имеет право на жизнь как коробочное нерасширяемое приложение для конечного пользователя.
Когда вся кастомизация заключается в смене «шкурки».
Вопрос «безопасности» очень сильно открыт…
Вопрос расширяемости… увольте.
Разбираем этот кусок кода частично
А если я хочу подменить шаблон и использовать другой? Мне копипастить весь action контроллера?
Скрипты, связанные с шаблоном, обязаны быть связаны только с ним, а не с action контроллера
А если я захочу выводить не html, а отдавать json? Опять копипаст?
Не, явное лучше неявного… Но не до такой же степени…
Кто мешал сделать так?
Йо, диджей…
Безопасность?
Мы добавили валидацию данных, которую я не видел в исходном коде…
Осталось написать корректно валидатор.
Я бы даже сказал — высеченный в граните при помощи зубила
Что вы слышали о маппинге?
Как этот конкретный код улучшает безопасность?
Вопрос был об архитектуре, котлетах и мухах.
То, что я вижу в коде, это помойка в одном месте.
О DataMapper нет, не слышали?
И как приведенный код улучшает «безопасность»?
Глянул…
https://github.com/opencart/opencart/blob/master/upload/catalog/controller/product/product.php#L229
Вам вопрос, как специалисту по архитектуре, такое в каждом контролере?
А держать 5 активных в которые не заглядывал в течении дня…
Это сравни тому как оставлять кучку мусора посреди комнаты — потом когда-то домету…
10+ проектов одновременно…
Мне ближе фреймворки, а не cms
Но код из любопытства гляну
Значит я очень невнимательно прочёл
Сначала пишут такие программы
Потом героически преодолевают трудности…
Ведь вы один из тех миллионов.
И вы, конечно же, не ошибаетесь
А вам я крайне рекомендую перечитать и вникнуть в текст.
Ну и определиться с тем, что же вы считаете велосипедами…
модульность дружит с модульностью.
Большинство современных шаблонизаторов отлично с этим живет.
Для изучения чтения
Миллионы леммингов не могут ошибаться…
Подразумевалось «все связанные данные и ресурсы в одной БД»
Если у вас пользователи не имеют связей между собой, то естественно БД может быть больше одной