208 похожих чатов

Добрый вечер. Нужно компонент news.list переделать из структурного в ООП.

То есть, насколько я понял все файлы остаются теми же, кроме component.php . Вместо него теперь class.php . И в классе описывается логика компонента, только теперь в ООП.
Проблема в том, что официальная документация Битрикса не помогает мне понять логику компонента. Если на уровне даты и время я понимаю логику, потому что там в файле component.php строчки 3-4, то у самого news.list ее понять проблематично, поскольку здесь уже около 600 строчек.
Какая логика в component.php у news.list? Как ее перенести в ООП в class.php? Где этот вопрос можно изучить, поскольку примеров конкретно на news.list я не нашел.

38 ответов

37 просмотров

Для нормального опп не достаточно просто class.php

Андрей
А что ещё нужно?

Я к тому что в одном классе все описывать не круто

Андрей
А что именно всё?

там 18кб кода по уму это все нужно разбивать не на 1 класс

Андрей- Автор вопроса
GX. ⚡️
там 18кб кода по уму это все нужно разбивать не на...

Да вот именно что его много, реально ли вообще такое выполнить?

Андрей
Да вот именно что его много, реально ли вообще так...

Реально. Хоть и незачем. Но раз у тебя нет понимания как компонент перевести на классы, значит либо плохо читал/смотрел курсы, либо недостаточный уровень знаний по php. Начни с чего-то попроще. Например, напиши свой несложный компонент (какой нибудь типа news list, только с простой логикой - обработка параметров, выборка, формирование массива, вывод). Потом перепиши его через класс. Или сразу напиши через класс, просто чтоб понять как оно работает. Если класс компонента перегружен логикой, то в битриксе обычно эта логика выносится в модуль. Но в твоём случае это не нужно, потому что задача ради задачи, а не для какой-то реальной пользы.

Андрей- Автор вопроса
Alexey Nazarov
Реально. Хоть и незачем. Но раз у тебя нет пониман...

О class.php очень мало информации, по крайней мере, в тексте.

Андрей
Да вот именно что его много, реально ли вообще так...

напоминает мою историю древнего мира: мне как то лет -цать назад поставили тестовую задачу - перенести лендинг с какого-то конструкта (возможно тильда, не помню) на битрикс, функционально писать оценил в неделю, но т.к. это была проверочная задача, я сохранил страницу целиком, накинул шаблон с админ панелью, и через полчаса сказал "готово", дольше битрикс разворачивал, чем задачу выполнял, проверка была пройдена, а скорость впечатлила заказчика)

Андрей
О class.php очень мало информации, по крайней мере...

Там насколько помню рассказано про методы для обработки параметров и вызова шаблона. Собственно, всё. Остальное это уже твоя логика. То есть в твоём случае, ты рефакторишь типовой компонент, разбивая эту портянку кода на небольшие понятные методы своего класса. По итогу работы методов должен быть сформирован $arResult ($this->arResult) Потом посмотри в курсе или типовых компонентах что происходит в методе executeComponent(). Про кэш в курсе тоже должно быть 100% (StartResultCache) Ну и для расширения кругозора и изучения темы под другими углами зрения можно просто погуглить. Сразу выползает что-то типа этого: https://www.youtube.com/watch?v=F0jYQdTEJEo https://ut11-web.ru/learning-eshop-on-1c-bitrix/support-class-in-components-bitrix/ и другие ссылки

Андрей- Автор вопроса
Михаил Сычев
напоминает мою историю древнего мира: мне как то л...

Ага, скорее всего так и есть. Знать бы что это за две волшебные строчки, которые нужно написать в class.php

Андрей- Автор вопроса
Андрей
Ага, скорее всего так и есть. Знать бы что это за ...

берешь класс, запихиваешь все в какой-нибудь метод, меняешь $arResult на $this->arResult $arParams на $this->arParams а вызов шаблона переносишь в метод executeComponent или сразу прям в него пихаешь все. и сдаешь постановщику со словами "какая задача, такое и решение"))) задача была в class.php перенести по факту выполнена, а как выполнена уже не обговаривалось, а это косяк постановщика, что не декомпозировал задачу)

Андрей- Автор вопроса

class.php Вот параметры в функции var1(); $arParams не может определить, скорее всего надо эту переменную прописать в скобках у var1(); но как потом это всё вывести в шаблон, подскажите пожалуйста?

Андрей- Автор вопроса
Samuel Green
подключить шаблон нужно

Так в функции executeComponent() внизу он разве не подключен?

Андрей
Так в функции executeComponent() внизу он разве не...

подключен, не обратил внимания, её обычно первой объявляют

Андрей- Автор вопроса
Андрей
Ребята, помогите, пожалуйста.

$this->arParams а также можно просто вызвать $this->var1() в executeComponent а в нем определить $this->arResult кто-то говорил что знает ООП🤔

Андрей- Автор вопроса
Андрей
Сейчас попробую

к томуже в шаблоне $arParams доступно

Андрей
screenshot Вот так что-ли?

$arResult и $arParams в классе не надо писать

Андрей
А где их писать?

в классе компонента $this->arResult $this->arParams в шаблоне $arResult $arParams

Андрей- Автор вопроса
Дмитрий Муравьёв
в шаблоне

Не понимаю, в шаблоне пишется только $arResult для вывода, зачем там $arParams

Андрей
Не понимаю, в шаблоне пишется только $arResult для...

если нужно использовать параметры компонента

Андрей- Автор вопроса
Артём Листиков
в классе компонента $this->arResult $this->arPara...

$this->arParams вывел данные - уже что-то. Спасибо

Андрей
screenshot Вот так что-ли?

‘’’private function var1()’’’)

Андрей- Автор вопроса
;) ))
‘’’private function var1()’’’)

Типа чтобы нельзя было ей воспользоваться за пределами класса?

Андрей
Типа чтобы нельзя было ей воспользоваться за преде...

Скорее придирка. Не приятно на такое смотреть

Андрей- Автор вопроса

Ребята! Задание выполнено! Всем спасибо, кто помогал! Без Вас бы я не уложился 🙏

Похожие вопросы

Обсуждают сегодня

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
а вы в курсе, что Initialize() не работает? var arr123: array[0..123] of Byte; ... Initialize(arr123, SizeOf(arr123));
Iluha Companets
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
что читать по делфи?вообще 0 в нем
fd dsds
9
Привет, сталкивался кто с такой ситуацией? У меня есть модальное окно Bootstrap, в нем кнопка закрытия: <button type="button" class="btn-close" data-bs-dismiss="modal" aria-...
Виталий
3
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
Карта сайта