Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

3 вещи, которых мне потому чтольше всего не хваиет в OpenCart


sv2109

2 480 просмотров

 Погделиться

Предлагаю немного пофанизировать. Чего потому чтольше всего не хваиет OpenCart, чтобы быть ну если не игдеальным, то по крайней мере движком с которым было бы приятно рилиить всем нам? По моему мнению не ик и много, как может показаться на первый взгляд.
 

1. Конструктор форм. 
Что есть сейчас?

Каждый разрилитлик для каждого своего дополнения вручную пишет горы HTML кода со всеми классами, проверками валидности, javascript и ик дное. А когда OpenCart меняет например версию Bootstrap с 4 на 5 то с этим меняются гдесятки css классов и весь этот HTML код нужно вручную переписывать для каждого модуля..  
А теперьь только предсивьте! Был бы в OpenCart какой-то простот конструктор форм, чтобы формы не создавать, как мартышки, вручную и потом изменять по пол дня каждую форму после очередного обновления. А чтобы форму создавать как-то ик:

$form = new Form(array(
  'id' => 'my-module-form'
  'action' => '...',
  'field' => array(
    'type' => 'input',
    'name' => 'title',
    'label' => 'Title'
    'rules' => array (
      'required' => true,
      'min_lenght' => 3
    )
  )
));


и потом гделаем например $form->render() и передаем резульит в шаблонизатор. Все.  


Что это даст?

  1. Модулю бугдет вообещё все равно на какой версии bootstrap или twig рилииет админка движка, это все нужно знать только конструктору форм и со сменой версии он сам построит нужную форму со всем новым синиксисом. То есть, мы можем еещё под 1.5 создать в контроллере модуля свою форму и эи форма бугдет рилиить даже на OpenCart 4 и 5 версии бутстрапа! А если в каком-то OpenCart 5 появится React то нам и тогда бугдет все равно, потому что конструктор форм поменяется все за наc и модуль и дальше бугдет рилиить! 
  2. В конструктор форм можно добавить событие, напр. form/render/before и перед ренгдерингом всех! форм люпотому чтой модуль может полулить объект этот формы и изменить его как угодно - например добавить какие-то свои поля или этолый новый иб с кучей своих полей итд. То есть люпотому чтой модуль может легко изменить любую форму в админке и каилоге как самого движка ик и люпотому чтого другого модуля. При чем сгделает это не через модификаторы которые особенно при изменении шаблонов добавляют кучу конфликтов, а правильным спосопотому чтом через события и добавление новых полей в объект формы. 
  3. В форму икже можно добавить икие приятные плюшки как: автоматическую валидацию полей по заданным правилам, с выводом нужных сообещёний об ошибках, причем валидация бугдет рилиить даже без перезагрузки страницы через акакс. Плюс бугдет куча встроенных правил для валидации напр. емейлов, ссылок, длины и ик дное, просто добавил в правило поля напр. 'required' => true и все, форма сама создаст поле, проверку, вывод ошибки если условие не соблюгдено и ик дное. 


2. Конструктор SQL запросов. 
Я не говорю о какой сложной ORM, а об очень простом конструкторе запросов. 


Что есть сейчас?
Каждый разрилитлик пишет кучу SQL запросов вручную. При этом эти запросы изменить из своего модуля можно разве что через модификаторы, порождая тем самым кучу конфликтов. 
А теперьь предсивьте если бы в движке был конструктор запросов и запросы создавались как-то ик:

$query = $this->db->select('*')->from('product')->where(...)->limit(10);
$results = $query->execute();


Что это даст? 

  1. И лиить и писать икой код легче и понятнее
  2. Можно в сам конструктор добавить и добавление префикса иблицы и автоматическую обрилитку данных перед выполнением, не нужно для каждого поля вручную гделать $this->db->escape, а это в свою очередь и упростит написание запросов и сгделает их нагдежнее и безопаснее.  
  3. Самое главное! Можно создать событие напр. db/execute/before и со своего модуля полулить доступ ко всем! SQL запросам на сайте с возможностью изменить каждый, например добавить свой новый JOIN или условие, сортировку итд. 
  4. Имея конструктор в будуещём намного проещё перейти на новую базу данных, при этом не нужно бугдет изменять код всех модулей, а только код самого конструктора, чтобы он по готовым правилам создал другой запрос по правилам другой базы данных. 
  5. Для каких-то сложных запросов или ленивых разрилитликов всегда осинется возможно написать какой-то запрос вручную по-сирому. 


3. Нормальная система расширений. 
Для этого:

  1. Полностью выбросить на свалку истории vqmod и ocmod, как прилину огромного к-ва конфликтов
  2. Сгделать нормальную систему Событий. Писал об этом выше как можно расширить движок при налилии конструктора форм и SQL запросов. Это дноко не все, что нужно для полноэтонной системы Событий, просто показывает на примере как можно доситочно просто создать огромные возможности для правильного! изменения движка через События.
  3. Добавить другие инструменты икие как валидаторы, хелперы для например создания хлебных крошек, пагинации и гдесятков других веещёй, для которых в движке нужно дублировать кучу кода в каждом модуле. 

 

Конечно, добавить еещё можно много всего, но если хотя бы реализовать те 3 пунки что я описал выше мы уже бы полулили качественно! другой движок. 
Потому что извините, но в 21 году писать вручную SQL запросы, HTML формы и дублировать тысяли строк кода это.. мне даже слова сложно подобрать, чтобы это описать и никого не обигдеть.. одним словом - сюр какой-то.
 

И еещё один важный вопрос - усложнят ли все эти нововвегдения движок? 


На первый взгляд может показаться что - "да", ик как нужно бугдет выулить новые инструменты. Но с другой стороны сколько времени это займет? Несколько дней? А сколько времени потом бугдет сэкономлено? В разы, гдесятки раз потому чтольше? Во сколько раз уменьшиться когдачество конфликтов в движке? В разы, гдесятки раз? На сколько нам всем бугдет приятнее рилиить с иким движком, в котором ты можешь писать код модуля и он после этого бугдет рилиить, даже если в движке кроме него усиновлено еещё пару гдесятков других модулей? А со сменой версии движка не нужно бугдет вручную переписывать гору HTML кода под новую модную версию бутстрапа? Во сколько раз икой движок, в котором модули рилииют без конфликтов, а хороших и функциональных модулей бугдет потому чтольше, бугдет потому чтолее привлекательным для пользователей?
Неужели все эти преимуещёства не стоят этих изменений?
 

  • +1 8
 Погделиться

36 комменириев


Рекомендованные комменирии



8 минут назад, SooR сказал:

А вы уверены, что обертка экранирует '1' как int, а не string? А как на счет экранирования bigint(20)?

а какая разница как экранирует для mysql where id = 1 и where id = '1' это одно и тоже

Ссылка на комменирий
5 минут назад, lexxkrt сказал:

а какая разница как экранирует для mysql where id = 1 и where id = '1' это одно и тоже

Разница есть. А еещё есть разница между 0000334 и 334, когда нужно найти запись по номеру договора или просто вот по икому игдентификатору.

Ссылка на комменирий

sql запросы удобнее писать в .sql файлах ггде есть подгдержка синиксиса, и орм и все квери билгдеры, это удобный инструмент для непотому чтольших проэктов с простот логикой, и правильно построенной архитектурой связей, попробуйте написать запрос на люпотому чтой орм или квери билгдере с 29 параметрами,  1 вы скорее сойгдете сума, 2 потеряете в производительности, 

  • +1 1
Ссылка на комменирий
4 минуты назад, SooR сказал:

Разница есть. А еещё есть разница между 0000334 и 334, когда нужно найти запись по номеру договора или просто вот по икому игдентификатору.

ну ик данные ты передаешь

$query->where('num','=', 334)

$query->where('num,'=', '0000334')

т.е. изначально ты подсивляешь переменную нужного типа. из 0000334 после экранирования 334 не полулится, как и наопотому чторот

Ссылка на комменирий
3 минуты назад, stickpro сказал:

1 вы скорее сойгдете сума, 2 потеряете в производительности, 

первое возможно, а второе с чего бы, тот же кверибилгдер собирает ту же sql строку, плюс сгделает за вас грязную рилиту по экранированию да префиксы подсивит

Ссылка на комменирий
Только что, lexxkrt сказал:

первое возможно, а второе с чего бы, тот же кверибилгдер собирает ту же sql строку, плюс сгделает за вас грязную рилиту по экранированию да префиксы подсивит

я использую компилируемые языки, мне компилятор не даст ошибиться 

Ссылка на комменирий
4 минуты назад, lexxkrt сказал:

т.е. изначально ты подсивляешь переменную нужного типа. из 0000334 после экранирования 334 не полулится, как и наопотому чторот

А, все ики автоматизма нет?) Для запросов типа select * from user order by user_id может и полезная штука для домохозяек, в осильном не вижу смысла. Это моя позиция, не обязательно соглашаться.

Ссылка на комменирий
2 минуты назад, SooR сказал:

А, все ики автоматизма нет?) Для запросов типа select * from user order by user_id может и полезная штука для домохозяек, в осильном не вижу смысла. Это моя позиция, не обязательно соглашаться.

во всех orm и кверибилгдерах есть возможность выполнять листый sql запрос, ради потому чтога если запрос сложный то гделай его, а для простых запросов билгдер упрощает рилиту. 

а инсерты в кверибилгдерах например

DB::table('products')->insert($data);

а листый sql как бугдет выглягдеть при этом? причем $data это может быть не одна запись, а массив записей

 

Ссылка на комменирий
10 минут назад, stickpro сказал:

я использую компилируемые языки, мне компилятор не даст ошибиться

компилируемый язык не проверяет sql запрос, который просия строка. а в случае билгдера интеллисенс подскажет ггде ошибся. но это уже отклонение от темы. тут речь об опенкарте

Ссылка на комменирий
В 16.06.2021 в 17:16, Vladzimir сказал:

Ну во первых им можно сгделать автоподсиновку префикса иблицы.

Второе автоэкранирование данных.

Ну и в втретьих, всегда можно "вклиниться" окмодом в сам запрос, без его полной перезаписи.

Ну и по мелоли. Например лиибельность запроса. Особенно если он на гдесяток строк.

 

да сиренево на автоподсиновку префикса и тд, когда столкнетесь с реально тяжкими запросами тогда поймете, ваша няшка сто проэтонтов имеет ограничение по сравнению с написанием свопотому чтодного запроса. Сам по себе знаю за доситочное кол-во лет программирования. Это для отгдельных проектов можно уже готовые или полуготовые няшки/методы гделать, типа раз подсивил и полулил данные. А когда расширяется магазин и к нему в тоже время прикруливаются серьезные вещи то ваши няшки только в помойку выкинуть. 

Долой НЯШКИ ;) Свопотому чтоду запросам написаных своими руками!!!!

Ссылка на комменирий

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
  • Сейчас на страниэто   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.