То есть, насколько я понял все файлы остаются теми же, кроме component.php . Вместо него теперь class.php . И в классе описывается логика компонента, только теперь в ООП.
Проблема в том, что официальная документация Битрикса не помогает мне понять логику компонента. Если на уровне даты и время я понимаю логику, потому что там в файле component.php строчки 3-4, то у самого news.list ее понять проблематично, поскольку здесь уже около 600 строчек.
Какая логика в component.php у news.list? Как ее перенести в ООП в class.php? Где этот вопрос можно изучить, поскольку примеров конкретно на news.list я не нашел.
Для нормального опп не достаточно просто class.php
А что ещё нужно?
Я к тому что в одном классе все описывать не круто
А что именно всё?
там 18кб кода по уму это все нужно разбивать не на 1 класс
Да вот именно что его много, реально ли вообще такое выполнить?
Реально. Хоть и незачем. Но раз у тебя нет понимания как компонент перевести на классы, значит либо плохо читал/смотрел курсы, либо недостаточный уровень знаний по php. Начни с чего-то попроще. Например, напиши свой несложный компонент (какой нибудь типа news list, только с простой логикой - обработка параметров, выборка, формирование массива, вывод). Потом перепиши его через класс. Или сразу напиши через класс, просто чтоб понять как оно работает. Если класс компонента перегружен логикой, то в битриксе обычно эта логика выносится в модуль. Но в твоём случае это не нужно, потому что задача ради задачи, а не для какой-то реальной пользы.
О 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 перенести по факту выполнена, а как выполнена уже не обговаривалось, а это косяк постановщика, что не декомпозировал задачу)
подключить шаблон нужно
Так в функции executeComponent() внизу он разве не подключен?
подключен, не обратил внимания, её обычно первой объявляют
Ребята, помогите, пожалуйста.
$this->arParams а также можно просто вызвать $this->var1() в executeComponent а в нем определить $this->arResult кто-то говорил что знает ООП🤔
Ну значит знает, но не идеально😏
к томуже в шаблоне $arParams доступно
$arResult и $arParams в классе не надо писать
А где их писать?
в шаблоне
в классе компонента $this->arResult $this->arParams в шаблоне $arResult $arParams
Не понимаю, в шаблоне пишется только $arResult для вывода, зачем там $arParams
если нужно использовать параметры компонента
Понял, буду пробовать
$this->arParams вывел данные - уже что-то. Спасибо
‘’’private function var1()’’’)
Типа чтобы нельзя было ей воспользоваться за пределами класса?
Скорее придирка. Не приятно на такое смотреть
Ребята! Задание выполнено! Всем спасибо, кто помогал! Без Вас бы я не уложился 🙏
Обсуждают сегодня