![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| MoLeX |
|
||||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Добрый день.
Подскажите как осуществить такое расширение класса. Есть головной класс test.php
и есть расширенный test_hook.php
Возможно ли сделать следующий финт ушами:
или я хочу получить невозможное? Это сообщение отредактировал(а) MoLeX - 9.9.2010, 11:30 -------------------- Amazing |
||||||
|
|||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
skyboy, есть какой то базовый класс Test, мне надо расширить её с помощью второго класса Test_hook
-------------------- Amazing |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
MoLeX, Тоесть. есть класс, test, который исправно где-то там работает и менять его не надо. Хочется, не меняя названия класса изменить его функционал?
После включения оригинального файла с классом сделать уже ничего нельзя. Если задача нечастая и нестрашно что медленная - можно при включении файла (в автолоде) текстово-регулярно подменить имя базового класса на какой-нибудь другой. сделать eval и потом честно описать наследника от этого другого с именем test. Добавлено через 1 минуту и 55 секунд Хотя, разумнее переименовать test в исходниках и не выпендриваться так ;) -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
classkit_method_*. но не думаю, что molex'y это действительно надо. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
хотелось бы без eval'a то, да оно по умолчанию не включено в РНР( Добавлено через 12 секунд будем продолжать искать варианты -------------------- Amazing |
|||
|
||||
| Muerto |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Увы не понял суть проблемы...
Почему мы делаем
А не делаем
Как мы можем хотеть использовать функцию которая никак не относиться к классу TEST ??? Для таких случаев мне кажется и придумали static
Это сообщение отредактировал(а) Muerto - 10.9.2010, 17:22 |
||||||
|
|||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Muerto, Представь, что в большом проекте все организованно оопно. Тоесть для каждой использемой фенечки существует свой класс, для каждого такого класса существует свой предок, у предка свой предок и так далее. Такая цепочка наследования фиксирует названия классов - предков, так как имя класса предка явно указано в описании наследника. Так что если нам приспичит поменять функциональность какого-то объекта в середине такой цепочки, и при этом изменять исходный текст "предка" нежелательно по религиозным соображениям, нам придется извращаться... За оопные жизненные принципы иногда надо платить
Вариантов выхода из подобных тупичков придумано достаточно, но они базируются на архитектурных, изначально вставленных в проект возможностях. Например, можно использовать делегирование а не наследование, использовать фабрику. А такое изменение предполагает неслабый рефакторинг... Впрочем, возможно задача еще более заковыриста и я все неправильно понял. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |