а если бы во всех штатных компонентах, да и в ядре не использовались бы стaтические методы - это жалкое подобие ооп,
а везде вначале создавался объект, тот же СiblockElement например и с ним шла работа
И
лежал бы гденить каталог, в котором КАЖДЫЙ класс типа
class СiblockElement extends system_CIblockElement { // пустышка} |
т.е. все классы наследовались бы от системных классов(которые менять нельзя - часть ядра),
а сам этот каталог чтобы НЕ ЯВЛЯЛСЯ ЧАСТЬЮ ЯДРА, (ну или не каталог, а 1 файл со списком всех классов -пустышек - не суть как организовать )
т.е. если мне нужно переопределить какие методы в СiblockElement то я в нём бы переопределил, или добавил свои методы, и во всём ядре, во всех компонентах это бы работало
тут конечно нужно потходить с умом, чтобы при обновлении допустим структура бд может поменять или ещё что ... но в целом, была бы сама ВОЗМОЖНОСТЬ это делать...
очень часто помогла бы я думаю
как думаете?
Если вам надо расширить функционал стандартного класса, применяйте наследование иначе:
class СMyIblockElement extends СMyIblockElement { // ваши методы}
Используйте СMyIblockElement везде, где вам надо.
----------
Если вы сделаете, как у вас написано:
class СiblockElement extends system_CIblockElement { // пустышка}
То СIblockElement::GetList заменит ваш system_CIblockElement::GetList, и у вас ничего не получится поменять в СIblockElement через родителя.
Если вам надо расширить функционал стандартного класса, применяйте наследование иначе:
class СMyIblockElement extends СMyIblockElement { // ваши методы}
Используйте СMyIblockElement везде, где вам надо.
не совсем поняли идею
system_CIblockElement - системный класс ( как сейчас СIblockElement ) , который нельзя менять
в файле, который подключается всегда в ядре написано
class СiblockElement extends system_CIblockElement { }
(СiblockElement - везде используется и может нами редактироваться если захотим ) и этот файл мы могли бы редактировать....
допустим захотел я поменять принцип формирования detail_page_url на свой, написал бы
class СiblockElement extends system_CIblockElement {
function GetList(){
parent::GetList()
// и тут следом бы поменял принцип формирования нужного поля
}
}
- И СРАЗУ БЫ ВЕЗДЕ ! и в админке, и во всех компонентах (в т.ч. в штатных ) это поле стало бы такое как я захотел