Новости Joomla

Вышли релизы безопасности Joomla 6.1.1 и Joomla 5.4.6

Релиз безопасности Joomla 6.1.1 и Joomla 5.4.6

Проект Joomla! рад сообщить о выходе Joomla 6.1.1 и Joomla 5.4.6. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2134 Просмотров
*

_andrew

  • Новичок
  • 3
  • 0 / 0
Перелпределение классов
« : 20.09.2011, 16:54:13 »
Всем привет, кто-то может подсказать, есть ли возможность в Joomla переопределять классы с директории libraries/joomla. Например, есть класс JDocumentHTML и мне в этом классе надо внести что-то свое (в принципе не важно какой класс и какие изменения), то как я это могу сделать? Реализованна ли в Joomla такая возможность или править только там, где они лежат, что в дальнейшем при апргрейде может создать кучу проблем.
Заранее благодарен за ответы.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Перелпределение классов
« Ответ #1 : 20.09.2011, 18:07:13 »
Можете.

Во view своего компонента подключите путь к файлам вашего класса, например

Код
    JHTML::addIncludePath(JPATH_COMPONENT.DS.'helpers'.DS.'html');

В соответствующей папке создайте файл с наименованием, совпадающим с наименованием вашего класса, например myclass.php

Соответственно в этом файле объявление класса будет выглядеть так
Код
class JHTMLMyClass 
{
     function myFunction() {...}

...
}
Обращение к функциям вашего класса:

Код
JHTML::_('myclass.myfunction', ...
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Перелпределение классов
« Ответ #2 : 20.09.2011, 18:07:37 »
Может Вы имели ввиду наследование? Если класс не объявлен как final, то его легко можно расширить. Таакс, ну в 1.5:
Код
class JDocumentHTML extends JDocument
Значит без проблем можно свой от него наследовать:
Код
class MyDocumentClass extends JDocumentHTML

Ну или способом SDKiller ;)
*

_andrew

  • Новичок
  • 3
  • 0 / 0
Re: Перелпределение классов
« Ответ #3 : 20.09.2011, 19:36:04 »
При чем тут наследование? То ли я неправильно выразился, то ли вы не понимаете о чем речь.
Попробую обьяснить, что б было понятней.
Joomla юзает свои классы, например есть класс JDocument, я хочу добавить в ЭТОТ КЛАСС свою функцию или модифицировать существующую, если я использую наследование, что получется?, я создам свой класс, но Joomla вызовет все равно JDocument! И то, что я создал свой (отнаследованный), система дернет тот класс, который прописан изначально!

Вот идея sdkiller мне нравится, хотя еще надо попробовать.

А вообще, мое мнение такое, что это плохо реализованно в Joomla. Учитывая, то, что благодаря autoload и include_path приложение может быть максимально гибким, Joomla это НЕ использует.

Если бы система использовала autoload , то достаточно было бы в начало стека include_path добавить папку (например local) и туда можно скидывать все системные классы (модифицированные разработчиком). В результате, autoload заглянул бы в папку local, если там есть нужный класс - брал бы его, если же там класса нужного нет - тогда лез бы в library. Это бы решило кучу вещей.
1. Легко переопределять системные классы, и не боятся, что при апгрейде системы что-то отвалится (так как системные классы не тронуты).
2. Не надо инклюдить и рекваирить классы и парится, что уже подключенно, соответственно jimport и ему подобные вещи не нужны.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Re: Перелпределение классов
« Ответ #4 : 20.09.2011, 19:58:41 »
...идея sdkiller...

Это не моя идея.
*

_andrew

  • Новичок
  • 3
  • 0 / 0
Re: Перелпределение классов
« Ответ #5 : 20.09.2011, 20:02:59 »
Это не моя идея.
Сорри, не так выразился, ваше предложение.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться