
Бернгардт
24.11.2016
17:47:01
точнее он не говнокод в чистом виде, т.к. ооп
но дебажить его гораздо сложнее
издержки технологии вообщем то

Dmitry
24.11.2016
17:47:40
Но я не настаиваю. Для моих задач д7 стал подарком свыше. Кому-то удобней как раньше

Бернгардт
24.11.2016
17:48:09
да я тоже не спорю, и не пытаюсь доказать что мои фломастеры вкуснее
просто рассуждаю вслух
очень я уж не люблю неявную логику..
экономия времени разработки, за счет двойного оверхеда потом на понимание - что вообще тут происходит
и поднятие планки входа

Google

Dmitry
24.11.2016
17:49:29
В этом и есть суть жизни двух ядер в одном продукте. Прогеры разделились, а запустить параллельный битрикс дорого

Бернгардт
24.11.2016
17:50:40
ну лично я это тоже считаю ошибкой
сахар над старым надо было делать, а не ядро пилить
ну да ладно..
меня вот другое убивает

Vite4eg
24.11.2016
17:51:14
А мне вот что про ооп интересно: написал я класс, есть у него методы, которые что-то из базы тянут. Есть на странице несколько компонентов. И все используют одни и те же методы объекта. Нет способа не делать одно и тоже несколько раз?

Бернгардт
24.11.2016
17:51:46
у битрикса было три плюса громадных, когда я входил
1. хороший маркетинг
2. относительно не высокий порог входа
3. хорошая документация
сейчас смотрю и вижу что все двигается к тому, чтобы из трех - оставить лишь один плюс

Vite4eg
24.11.2016
17:52:35
Порог входа вроде не меняется. Видео ннормальные есть

Бернгардт
24.11.2016
17:52:50
прям в память всмысле

Vite4eg
24.11.2016
17:53:21
В оперативу?

Бернгардт
24.11.2016
17:53:38
при недостаточных доках - это повышение порога
за счет ооп отдебажить тоже становится сложнее, в ядро уже тоже просто так не заглянешь если что..
В оперативу?
угу, если уверен что данные понадобятся
параметр класса, наполняем его значениями
реализуем "ленивую" логику - если данных еще нет - догрузим из бд и сохраним, если уже есть - не трогаем бд
но я с трудом прдеставляю зачем это в визуалке надо

Google

Бернгардт
24.11.2016
17:55:42
тут уже получается вопрос - не как, а зачем..
тем более если есть кеширование компоненты..

Vite4eg
24.11.2016
17:56:10
Юзкейсов не придумал. Это пока так...

Бернгардт
24.11.2016
17:56:32
при обсчетах - вполне реальный кейс
либо для расчетов, где данные одни и теже дергаются
либо для упрощения логики кода
но на cli можно и рамы побольше дать если что )

Vite4eg
24.11.2016
17:59:59
У нас сейчас на проекте ппц какая ооп система развернута. Там все через менеджеры ресурсов, ресурсы, все на ArrayObject. Реальное имя класса почти нигде не участвует. В конструкторах описаны матоды, которые по своей логике вызывают ресурс, который создает обхект класса, свойства которого — объекты других классов. И вот несколько компонентов на странице, которые создают эти объекты десятками
То ли это ппц тупость, то ли высшие уровни ооп, для меня пока недоступные. Но для магазина, как по мне, это реальный оверхед


Бернгардт
24.11.2016
18:01:39
ну все не всегда такое как кажется
смотреть кейсы надо
где критична память, время выполнения и т.п. - функциональный подходы, прямые sql запросы рулят и подсвистывают
только это очень сложно сопровождать и тестировать, это почти нереально использовать повторно, лишь идеи которые в головах
если же надо хорошее тестирование, или возможность его
переносимость - то тут подсвистывает ооп подходы
а истина где то посередине, и этот дзенврят ли ктото познал..
но опять же.. это лишь мое мнение
наверное программирование еще все таки слишком молодая отрасль
мало кто понимает что из этих инструментов есть молоток, а что есть отвертка..
тем более они визуально достаточно похожи, а изучать оба или лениво, или накладно
и почти всегда не понятно что перед тобой - шуруп или гвоздь..
вот и появляются перекосы в ту или иную сторону
а веселье подливает то, что даже если ошибся - ты вынужден уже поддерживать то что наделал..


Pavel
24.11.2016
18:08:43
где критична память, время выполнения и т.п. - функциональный подходы, прямые sql запросы рулят и подсвистывают
только это очень сложно сопровождать и тестировать, это почти нереально использовать повторно, лишь идеи которые в головах
если же надо хорошее тестирование, или возможность его
переносимость - то тут подсвистывает ооп подходы
а истина где то посередине, и этот дзенврят ли ктото познал..
Тут как всегда нужно найти середину которая всех устроит. Нельзя заниматься преждевременной оптимизацией там где она может и не понадобится, например, писать весь проект прямыми запросами, ну и абстракциями увлекатся не стоит и критичные участки лучше захардкодить, так как оно вряд ли будет еще где то использоваться или в ближайшее время участки вдруг станут не критичными

Бернгардт
24.11.2016
18:09:30
ну это понятно
вопрос лишь опыта и хорошего сорта кофе

Dmitry
24.11.2016
18:26:30

Vite4eg
24.11.2016
18:27:49
Синглтон?

Бернгардт
24.11.2016
18:30:14

Vite4eg
24.11.2016
18:30:59
естественно )
Синглтон как бы не есть хорошо. К тому же возможны варианты, когда нужно несколько объектов

Dmitry
24.11.2016
18:31:11
Необязательно
$a = new B;
$APPLICATION->IncludeComponent(
'component',
'template',
array('MY_CLASS' => $a)
);
$APPLICATION->IncludeComponent(
'component2',
'template2',
array('MY_CLASS' => $a)
);

Бернгардт
24.11.2016
18:31:26
не очень хорошо потому что ктото такое написал? хм.. оригинально

Google

Dmitry
24.11.2016
18:35:05
Синглтон ругают за то, что его без меры пихают куда ни попадя
Опять же синглтон вреден в приложениях постоянно висящих в памяти, а в пульсирующем пхп, тебе всего-то надо пронести данные от получения запроса, до вывода шаблона. После этого все по новой инициализируется

Бернгардт
24.11.2016
18:35:55
ну.. я как раз выше об этом писал, только применительно к компонентам впринципе
что это несколько избыточно - ооп, ради ооп
дело не в синглтоне самом.. а в том что молоток хорош для гвоздей
а для шурупов он както не очень, но они забиваются, это да
а касаемо твоего вопроса - ты спросил, я хочу логику синглтона
тебе просто ответили что для этого надо использовать синглтон

Vite4eg
24.11.2016
18:37:54
Логика сиглтона - это не более одного

Igor
24.11.2016
18:38:16
в битриксе есть контейнер
который не используется

Vite4eg
24.11.2016
18:38:24
А мне бы просто не хотелось похожие операции выполнять постоянно. Идея с кешированием в оперативе вроде ничего

Igor
24.11.2016
18:38:24
если осема надо

Бернгардт
24.11.2016
18:38:43
один на несколько компонент..
если хочешь неявно - синглтон
либо передавай явно.. одно из двух
ну или кешируй гдето в другом месте, не в классе
в сессии например, главно чистить не забывай

Igor
24.11.2016
18:41:06
или написать какой-то сервис, который по цепочке будет забирать данные оО

Бернгардт
24.11.2016
18:41:39
наверное вопрос дурацкий..
но если я правильно понимаю - речь о компонентах и их однородных данных
а почему не использовать штатное управляемое кеширование?

Igor
24.11.2016
18:42:20

Бернгардт
24.11.2016
18:42:22
и вроде и кейс закрывает
и ограничения на раму этого нет, ну если там конечно не дикое кол-во данных

Igor
24.11.2016
18:42:28
и использовать в нескольких компонентах.

Бернгардт
24.11.2016
18:43:26
ну да, если данные одинаковые - рассматривается класс как место хранения, чтоб 10 раз базу на одни и теже данные не опрашивать
это очень похоже на логику кеширования, на что я и обратил внимание
а т.к. речь о разных компонентах, то кеширование управляемое, чтоб самому задать ключ кеша
изначальный вопрос просто был про одни данные для разных логик впринципе
ответ был - в раме, в параметре класса
если речь о компонентах - то кеш
если компоненты на разных сайтах одной машины - то мемкеш
если компоненты на разных сайтах разных машин под разными ядрами - то сервис )))
что делать если будет из разных галактик - я еще не придумал..

Igor
24.11.2016
18:45:48
квантовая спутаность
эт если разные галактики

Google

Ma
24.11.2016
19:09:27
Приветствую, есть работающие по sale.order.ajax, реально ли переделать в шаги?

Vite4eg
24.11.2016
19:11:27

Oleg
25.11.2016
02:05:18
всем доброго утра) с пятницей

Garry
25.11.2016
03:08:14
Доброго утра, почему CSaleLocation::GetByID не возвращяет улицу??

Oleg
25.11.2016
03:11:09
а ID, который передаете в эту функцию, принадлежит к местоположению типа "Улица"?

Garry
25.11.2016
03:34:13
да

Admin
ERROR: S client not available

Oleg
25.11.2016
03:37:58
$arLocs = CSaleLocation::GetByID($arProps["VALUE"]);
$var = Bitrix\Sale\Location\Admin\LocationHelper::getLocationPathDisplay($arProps["VALUE"]);
вот так если попробовать, улица выводится?

Garry
25.11.2016
03:41:11
Сейчас прверю
Да во всю строку string(116) "Россия, Калининградская область, Калининград, Панинский проезд"

Oleg
25.11.2016
03:45:04
ну вот, значит улицу он возвращает, а корректный вывод нужно смотреть среди методов класса Bitrix\Sale\Location\Admin\LocationHelper

Garry
25.11.2016
03:45:47
Спасибо за подсказку

Oleg
25.11.2016
03:49:49
Пожалста, обращайтесь

Garry
25.11.2016
03:51:54
Если что вот так можно получить улицу
$parameters = array();
$parameters['filter']['=ID'] = $request->get("ORDER_PROP_LOCATION");
$parameters['filter']['NAME.LANGUAGE_ID'] = "ru";
$parameters['limit'] = 1;
$parameters['select'] = array('LNAME' => 'NAME.NAME');
$arVal = Bitrix\Sale\Location\LocationTable::getList( $parameters )->fetch();
if ( $arVal && strlen( $arVal[ 'LNAME' ] ) > 0 )
{ $val = $arVal[ 'LNAME' ]; }

Юрий
25.11.2016
06:15:57
может вы и мне подскажете. я вчера спрашивал по поводу выгрузки - товары выгружаются в несколько инфоблоков и получается дублирование. плюс у товара в одном инфоблоке у товара есть картинка, в в дрругом нет. насколько сложно переделать? до этого с интеграцием практически не сталкивался

sowd
25.11.2016
06:17:21
так там же вроде как ты указываешь в профиле в какой иб выгружать, и что делать с дублями

Юрий
25.11.2016
06:18:42
ну там походу структура базы нестандартная.
магазин запчастей, каждый инфобок это марка. в марке категории

sowd
25.11.2016
06:19:29
так это жесть

Google

Юрий
25.11.2016
06:19:39
и как оказалось некотоые запсасти относятся к нескольким маркам

sowd
25.11.2016
06:19:40
переделай по феншую
пусть все в одном иб будет

Юрий
25.11.2016
06:20:09
как? как сделвть чтобы марки были категориями в одном инфоблоке7

Ma
25.11.2016
06:20:15
Юрий, а почему бы просто не разбить файл по маркам? И выгружать в каждый инфоблок свой файл?

Юрий
25.11.2016
06:20:50
выгрузки приходит из 1с.

sowd
25.11.2016
06:20:55
в 1с настрой выгрузку либо пили обработчик, который за ленивым 1скником будет приводить базу в порядок

Юрий
25.11.2016
06:21:20
да втом то и дело что я не работаю с 1с, там свой программист

sowd
25.11.2016
06:22:07
ну либо пили обработчик, либо указания для 1сника, второе предпочтительней так как нафиг костыли

Юрий
25.11.2016
06:23:36

sowd
25.11.2016
06:24:12
марки это разделы, илейте все в 1 иб, ну или марки это свойства, вариантов та масса, как те удобней будет?

Юрий
25.11.2016
06:25:56
по структуре на сайте я понимаю как лучше сделать
а в 1c как-то указывается, что эта категория будет разделом или это будет отдельный инфоблок?

sowd
25.11.2016
06:26:43
да нельзя категории на иб разбивать)
пусть их в разделы выгружает

Ma
25.11.2016
06:26:58
Так в этом то и проблема, то что если будет 1 ИБ и в нем категории, все будет нормально выгружать.

sowd
25.11.2016
06:27:40
непонял почему это проблема?)

Ma
25.11.2016
06:28:20
Я имел ввиду проблема Юрия в этом, то что у него не 1 ИБ с категориями)

Юрий
25.11.2016
06:29:00
я это понимаю. но при выгрузке создаются инфоблоки