Перевизначення функцій у 1c-bitrix
Перевизначення функцій у 1c-bitrix
Не вперше виникла потреба перевизначити функцію.
Пропоную надати можливість перевизначати функції бітрикса, не чіпаючи ядро.
Неодноразово просили про це з останніх мій запит на DI контейнер, що по суті вирішить і ваше завдання. http://idea.1c-bitrix.ru/overriding-functions-in-the-1cbitrix/
Добре, Владиславе, це прийнято, але ось що ще є - ідеологія продукту (як і в будь-якому продукті). Ось приходить новачок, поспішає швидше розпочати робити сайти. Виникає складність. Що він робить? А лізе та перевизначає функцію, задоволений. Але проблема в тому, що він не вчиться, і далі продовжує лабати щось своє абсолютно не за ідеологією. Як вирішити цю проблему?
Я згоден, фішка потрібна, сам не відмовлюся, але років через 5 вона стільки гемору прийме, що страшно уявити.
+ Долганін Антон runkit добре, але він є не скрізь і РНР треба збирати з ним.
На рахунок перевизначення класів і методів не бачу великих проблем, якщо використовувати контейнер DI. Так, в теорії щось можуть зламати, але там завжди буде видно звідки "ноги ростуть". е
Зараз є ряд завдань, які без перевизначення ядра НІКАК (нормально) не вирішити, і це засмучує.
Антоне, та й зараз проблема і без можливості перевизначень є, коли новачки лізуть і перевизначають ядро. Та чого таїти, сам цим на парі проектів займаюся, бо Бітрікс вже 2-й рік не може дописати 1 рядок.
Тут більше треба показати підхід (навчальний курс), як можна правильно перевизначати медоди та функції.
Ок, ближче до прикладу підійдемо – якщо вони полізуть у гетлисти і почнуть дописувати туди JOIN'и, що тоді?
| треба показати підхід (навчальний курс) |
А як описати досвід?
Яще раз акцент зроблю - перевизначення це ЗАВЖДИ відключення мозку, завжди відключення розвитку програміста. Походив, покурив, чаю попив - "ну це завдання виразно з 1% завдань, які Бітрікс НЕ МОЖЕ ВИРІШИТИ!! треба перевизначати".
Я досі з таким стикаюся (а досвіду 10 років вже). Що мовляв "а як добре було б тут влізти". Аж ні, день подумав, переспав з ідеєю, і народилося рішення в обхід. Дуже рідко бувають затики (я навів приклад).
Тому я вважаю ідеї перевизначення із коробки небезпекою для ідеології. Тут 1-5% користі, зате 50% шкоди.
| Антоне, та й зараз проблема і без можливості перевизначень є, коли новачки лізуть і перевизначають ядро. |
| бо Бітрікс вже 2-й рік не може дописати 1 рядок. |
| Михайле, а як бути з ідеологічною проблемою, яку я описав? |
Антон. Якщо так міркувати, то навіщо давати відкритий код ядра? Просто коли реально це необхідно, доводиться писати всякі милиці, писати свої функції такі самі, але які відрізняються 1-2 рядками коду. І вони у всіх перебувають у різних місцях. Ось це дійсно проблема. Так само в цьому файлі можна писати (зробити неофіційний стандарт серед розробників) свої функції, щоб у разі чого не шукати по всіх шаблонах сайтів і т.д. Зараз берешся щось іноді доробити, і реально не розумієш що де написано. Я думаю цій ідеї є місце бути. Як наприклад картинки повинні зберігатися в upload, скрипти в js і т.д. Погодьтеся, коли всі інструменти на своїх місцях, то і працювати приємно.
А техпідтримка бітрикса - вони вже знають, що де лежатиме, у разі звернення.