Вход • Регистрация

Идеология программирования

  • 30 ноября 2018 г.
  • Здравствуйте!

    Я - новичок, но маленько освоился:
    - создал копию модуля "Новости" и переделал его в "Сотрудники";
    - переписал скрипт обмена с 1С, чтобы из конфигурации 1С:Поликлиника загружались услуги и врачи в формате MedML (как CommerceML, только другой).

    Обратил внимание, что в shop.1c.php все взаимодействия с объектами (товарами, категориями и т.д.) сделаны методом прямого обращения к БД (insert, update). Это довольно сложно - приходится лазить в БД и смотреть, что там за таблицы, какие у них колонки, и т.д. Пытаться понять, какие колонки заполнять обязательно. Да еще и с типами данных не ошибиться :( И регулярно делать бэкапы БД.

    Судя по тому, что все работает, я справился. Но хочу спросить:

    1. Мне и дальше следует придерживаться такой методики? Я понимаю, что так быстрее работает.. но код выглядит страшновато, и сложно его писать.

    2. Нет ли какого-нибудь более простого подхода к подобным задачам, типа как на вордпрессе?

    Типа функции wp_insert_post(), которой передают массив данных, а она сама там с БД разбирается. И если ей что-то забыл передать - она додумает, не страшно.

    3. Есть ли аналоги вордпрессовских фильтров и экшнов? Как мне, например, "подписаться" на какое-нибудь событие?

    Спасибо!
    • 30 ноября 2018 г.
    • 1. Да. Запросы страшно выглядят?)
      2. Есть только вспомогательные функции https://www.diafan.ru/dokument/full-manual/developers/api/database/ , как в WP такого нет.
      3. Уточните более конкретно, что Вы имеете в виду
      • 01 декабря 2018 г. , редакция: 01 декабря 2018 г.
      • 1. Ну, я с ними раньше на php не сталкивался, потому что весь мой опыт ограничивался WP, а там для маленьких свистелок и перделок, как правило, такое не требуется. Скорее не страшно, а непривычно :)

        2. А, то есть то, с чем я работал - это и есть вспомогательные функции.

        3. Вот, например, ситуация: мне нужно в момент публикации товара на сайте отправить его в Вконтакте.

        На WP я написал (условно) функцию и подвесил ее на хук save_post, без вмешательства в штатный код.

        На Диафане же мне следует найти место, где публикуется пост, в штатном коде, скопировать этот файл в /custom и добавить туда вызов моей функции, так? Или есть иной метод?

        Кстати, я заметил в коде shop.1c, что для публикации товара мы просто проверяем настройку 1c_act и, если она тру, то во время добавления товара тупо записываем в колонку таблицы "act" 1. И товар как бы уже опубликован, верно? То есть мне нужно будет как минимум:
        - добавить вызовы моей функции в shop.1c (если мы публикуем товар сразу после загрузки / обновления из 1С);
        - добавить вызов моей функции еще в какое-то место (которое выполняется при клике по переключателю "Опубликовать" в админке).

        Верно?
    • 30 ноября 2018 г.
    • Чтобы передать массив, надо по моему тоже представлять как данные в базе хранятся. Иначе Это смахивает на нечто из области фантастики. Разве не так?
      • 01 декабря 2018 г.
      • да почему же, вполне можно сделать, есть таблица users, там обязательно должно быть заполнено имя, фамилия и отчество, а вот кто то об этом не знает и передает только имя, функция получила только 1 аргумент, а другие 2 по умолчанию "на додумает, не страшно.", но это возможно только с первым аргументом, короче да, больше из фантастики))))
      • 01 декабря 2018 г.
      • Если смотреть на WP, то не обязательно. Достаточно прочитать инструкцию к функции, которую написали разработчики WP и которая работает с БД. Что и как ей передавать. В случае ошибок она просто не сработает.

        Я пописывал маленько, на любительском уровне. И ни разу phpMyAdmin не открывал, не требовалось :)

        Возможно это одновременно и достоинство WP, и недостаток.

        С Диафаном же сразу в омут с головой. Мне кажется, что порог вхождения и требования к квалификации кодеров тут выше. Хотя штатный код нагляднее и проще.
        • 01 декабря 2018 г. , редакция: 01 декабря 2018 г.
        • Ну так а в чём разница между тем чтобы посмотреть поля в базе данных и понять какие поля можно записать да ещё и их формат (размер) и тем что кто-то заботливо их перечислил в документации через запятую?
          Абсолютно никакой по моему вопрос в оформлении просто и в скорости выполнения. В WP проще оформляется в связи с чем имеется дополнительный уровень обработки (своего рода синтетический сахар) в Diafan похардкорнее этот же массив оформлен в виде запроса полуфабриката.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум