Информация
- В рейтинге
- Не участвует
- Откуда
- Курган, Курганская обл., Россия
- Работает в
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Fullstack Developer, Software Architect
Senior
PHP
Docker
Database
OOP
Algorithms and data structures
Object-oriented design
Database design
Software development
Designing application architecture
Уже вышли в main 24.100.0
Внутри продукта константа всегда
true
если подключен файл прологаmain/include/prolog_before.php
, но никогда не знаешь, чего можно ожидать от кастомных интеграцией :)Начиная с версии main,24.0.0 вы можете регистрировать свои команды через конфигурацию модуля ;-)
Дока: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=11685
Поверите если скажу что это действительно в работе? :-)
Тут скорее правильней задать вопрос вопрос про популяризацию CMS в целом, т.к. планов отчуждать отдельно фреймворк на текущий момент нет.
Данный блог мы как раз используем как один из инструментов общения с разработчиками и популяризации продуктов компании, в частности и фреймворка.
Также ведутся работы по переработке документации конкретно по фреймворку и CMS, чтобы документация стала более френдли к разработчикам.
Плюс не прекращается регулярная доработка ядра продукта, внедряем новые инструменты и технологии. В качестве спойлера могу сказать что в этом году подвезём пару-тройку хороших нововведенией, которые вероятно многие долго ждали ;-)
Отсутствия адекватного инструмента, это прям сильно тормозящий фактор :/
Неужели вендоры Android и iOS не могут дать нормальной тулзы?
Они хотя бы делают что-то в этом направлении? :D
Этот набор компонентов используется только для REST приложений, он коррелирует с имеющейся библиотекой внутри продукта.
Это был пример когда нужно вшивать какой-то кусок в какой-то SQL.
При желании можно использовать и
convertToDb
:Один раз, зато какой :) Тут я имел ввиду сам класс как кейс использования
forSql
.Если говорить про конструирование SQL запросов без ORM, даже банальных LIKE конструкций, то
convertToDb
не подойдёт, и там нужно использовать толькоforSql
:С таким примером соглашусь, что наличие замыкания имеет смысл и будет удобно.
Я не очень люблю когда в качестве аргументации приводят очень простые примеры, которые чаще всего далеки от жизни, поэтому не упустил возможности указать на это :)
Саму реализацию через коллбэк возьмём на заметку и возможно реализуем, спасибо!. Насколько знаю уже во всех фреймворках и ORM такая история есть, не будем отставать от устаревающих трендов :)
Если со всем соглашаться, то времени не хватит ни на ответы, ни на реализацию, поэтому приходится достаточно консервативно подходить ко всему новому :D
Такой экзотики из коробки нет :) В данном случае можно добавить свое поле:
Кастомное поле
Конкретно с JSON справляется: можно использовать поле
Bitrix\Main\ORM\Fields\ArrayField
, при сохранении/чтении будет выполнятся преобразование данных в/из JSON.Про работу с бинарными данными в статье упоминание есть.
На счет "прочих типов", тут уже нужна конкретика :)
Действительно, опечатка в статье. Спасибо!
Верное замечание, убрал по тексту использования термина, чтобы не путать умы юнных читателей :)
Раскрыл использование методов
convert*
детальнее ;-)Зачем, если исходники у нас всегда под рукой? :) Если серьезно, то проблема с докой и справочником API известная, мы ей занимаемся!
Завидую вашей способности читать чужие мысли, но в данном случае это лишь вопрос неверной терминологии, а не непонимания)
Не всегда стоит использовать
convertToDb
, вместоforSql
. В целом сам классSqlHelper
, является хорошим примером когда стоит использоватьforSql
.Если мы говорим про клиентский код, то тут да, почти всегда нужно использовать метод
convertToDb
, либо его конкретные реализации.Надеюсь мы оба понимаем, что это неправда ;) Обрезка происходит не "молча", а только в случае указания длинны в методе
convertToDbString
, либо при указании размера в ORM в некоторых классовBitrix\Main\ORM\Fields\*
.В случае ORM, вместо указания размера и обрезки, можно использовать
Bitrix\Main\ORM\Fields\Validators\LengthValidator
Более подходящего термина к сожалению не нашлось, т.к. в любом случае это именно подготовка SQL запроса.
Очень жаль, что вы не заметили блок кода который следует сразу за этой фразой :(
Пока вы пишите простой код на 2 строки, то действительно выглядит лучше. Если речь уже про более большие куски кода, что замыкание, что try/catch выглядят одинаково ;)
Дизайн - сущность, дизайнить - процесс ;-)
UserStoryMapping тут не рассматривается, потому что он сильно хуже данных подходов? Кажется он самый попсовый :)
Ясно, понятно. В целом могли сразу ответить что сами не понимаете о чем пишите ;-)
Много буковок и ни одной картинки :( Диаграмма C4 это про системный дизайн или про архитектуру?
Можете в картинках привести пример: вот схемка архитектуры, вот схемка системного дизайна?
Или разница вообще не в схемках? :)
Спасибо за развернутый ответ!
Крутая статья, спасибо вам!
Пример достаточно простой, но как быть если проект большой? :)
Т.е. в текущем примере у вас модуль
Shop
, но в реальных проектах модулей как минимум 10, а если мы говорим еще и про контексты внутри домена, то иерархия достаточно сложная. Как это всё должно выглядеть?Подкол был в том, что у вас возникли вопросы к Битрикс, и не возникли к Yii и Laravel, которые тоже свои валидаторы сделали, а не заиспользовали Symfony ;)
А почему вы так решили? Валидацией занимаются валидаторы, атрибуты привязываются к полю и поставляют валидаторы, которыми это поле нужно проверить. В самой статье есть отдельный абзац и пример про использование валидаторов без атрибутов.
Как мне кажется, нигде кроме symfony вы и не найдёте вынос правил валидации в yaml файл :D
Нужно ли валидацию насколько далеко уносить от кода, который её использует? Очень сомнительно.
Если речь про атрибут свойства - то да, валидироваться будет только значение одного свойства.
Если сделать атрибут класса - то он принимает весь объект и может формировать любые правила и условия. В статье проверка нескольких полей отражена в примере
AtLeastOnePropertyNotEmpty
Напишите пример как это должно работать по вашему мнению, желательно на примере валидаторов симфони, раз уж вы начали сравнивать с ним ;)
А в чем проблема? Создаете атрибут
DoesNotContainSwearWords
, который принимает все настройки и поставляет нужный валидатор, создаете собственно этот валидаторDoesNotContainSwearWordsValidator
, который реализует необходимую вам логику.А прочей это какой? И насколько это надо для операции валидации конкретного поля?
Опять же если сопроводите примерами из symfony, будет невероятно великолепно ;)
А вы в целом работали с Битрикс? Знаете что он не через composer устанавливается? :)
Потому что Битрикс это не библиотечка, которая собирается из packagist-a . Внедрять сторонний компонент, с кучей сторонних зависимостей, в коммерческий проект, который затем неизбежно будет зависеть от этого стороннего решения - крайне плохая мысль. Тем более если речь про конкретный функционал.
Адаптация и интеграция того самого великолепного решения, которое лучше в тыщу раз, под используемые в Битрикс классы и сущности также не задача из разряда "просто сделай composer require".
Ну и вам уже надо определиться с вашим отношением к валидации в Битрикс: это всё-таки "копи-паста" или же это "худшая реализация" ;)
Я тоже с точки зрения здравого смысла не понимаю зачем нужны еще какие-то решения и фреймворки, если есть symfony ;)
А чем Битрикс хуже чем Yii или Laravel? Тоже хочется велосипед :)