битрикса, не внося изменения в ядро? Мне нужно добавить всего один свой метод
Можно попробовать написать свой класс унаследованный от класса этого модуля и воткнуть туда метод, если гении битрикс туда не впихнули final. Или прикрутить метод просто сбоку, если он будет использоваться сам по себе.
init.php править можно?
а то у меня была задача посложнее, сделать то же самое, но не внося никакие правки в init.php
spl_register_autoload в начало init.php, тут используешь тот факт, что классы в php не встроенный функционал (ссылки найдешь). Но не касается ряда классов из ядра Битрикса, которые стартуют раньше начала выполнения init.php. Но их немного.
Таким образом тебе даже ядро переписывать не придется
Сразу надо было послать. Чо это init.php нельзя править? А что править?
Модули не правят ядро. Как-то так. Но очень нужны были деньги. После НГ я наработаю портфолио и увелчиу расценки до 2 тысяч в час. Всему виной трудная личная жизнь и полтора года перерыва на занятия разработкой приложений для смартфонов и полгода лучезарного отдыха
Хотя можно и в модулях править ядро, но это было бы уже некорректное решение
Но здесь такой момент, что я правлю модуль, который имеет свои методы для вебхука, определенные в "константе" $map (53 строка), для большей ясности прикреплю код файла: https://pastebin.com/5MaQ1wxG Мне, насколько я понимаю, нужно добавить в эту же константу свой метод, чтобы при отправке запроса по вебхуку - он отрабатывал, т.е.: https://bitrix.ru/rest/1/asdf/bizproc.my.method
вторая ссылка - 404.
Да, это просто пример вебхука, метода, который должен отрабатывать и который нужно занести в $map
стандартная ссылка по перегрузке методов ядра Битрикса - https://aclips.ru/bitrix-override-classes/. Я бы мог, как решивший несколько более изощренную задачу в статью добавить еще пару дополнений, но лень пока.
и потом поделись, проходит ли при отработке вебхука init.php или там еще какие-то свои закавыки. идёт?
https://gist.github.com/Dok11/68704fb68dbd7fe416b717e25f833246 — вот такой хак еще можно попробовать, если другими способами не выдйет. При наследовании сделать свой метод onRestServiceBuildDescription, вызвать parent::..., взять его результат, добавить или изменить что вам требовалось и вернуть модифицированный массив
Благодарю! Буду пробовать
Значит, как я предполагал, в модуле можно переписывать и файлы из ядра. Хотя опять же, если обновление пройдется именно по этому классу, то изменения будут затерты.
Это не перезапись файлов из ядра, это использование их в рантайме. Сам файл остается неизменным То есть, для контроля целостности все останется как и было, но в момент выполнения кода мы получаем расширенную функциональность.
да, более изящное решение. хотя, конечно, php производный от сишника, у скриптовых языков всегда есть и недостатки и достоинства
Обсуждают сегодня