![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Marena |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 10.8.2009 Репутация: нет Всего: нет |
Добрый день.
Как сделать чтобы конечный класс Base мог вызывать ф-ции других классов (Test1, Test2, Test3, ...)
|
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
обычно необходимость в множественном наследовании означает неправильно выбранный способ решения задачи. Зачем понадобилось множественное наследование?
|
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Marena, множественное наследование не поддерживается в php, по причине, о которой сказал youri.
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну хотя бы в том случае, когда у нас для решения задач используются разные классы. и в какой-то отдельной ситуации потребовалось использовать сразу несколько. в дальнейшем приходится передавать ссылку на объект и возникает проблема - приходится передавать ссылки на все объекты. вот и вопрос, почему бы не отнаследовать все нужные классы в один объект? |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
bars80080, по-моему здесь и применяется рефакторинг, если приходится передавать кучу ссылок одному классу.Может стоит объединить базовые классы?
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Конкретный пример в студию -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
а к элементу хэша нельзя прицепить ссылку на объект какого-то класса?
Это сообщение отредактировал(а) gcc - 13.8.2009, 10:47 |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну, к примеру, есть у меня класс построения страницы для типа 1. этот класс занимается выборкой из БД (с помощью другого кстати класса), поиском потомков, а потом собственно собирает саму страницу. для типа 2 мне нужен совершенно та же система, но плюс авторизация и ряд дополнительных методов, части из которых нужны полученные данные при авторизации и ряда других операций. вот и получается, что приходится делать не универсальные решения, где приходится либо создавать объект из свойства класса: $this->db = new DB(); но этот вариант не удобен тем, что зачем запускать ещё раз соединение с БД, если оно уже есть в другом объекте? либо передавать объект с помощью global, что попахивает частным не гибким решением если бы можно было отнаследовать ряд нужных классов в один, да ещё по ходу действия - это было отлично |
|||
|
||||
MoLeX |
|
||||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
не совсем гуд через глобал
разработчики не учли этого момента. Добавлено через 26 секунд Интересно, а через какой-нить изврат это удасться сделать? Добавлено через 44 секунды
это как?! -------------------- Amazing ![]() |
||||||
|
|||||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
я не пробовал, а что нельзя?
зачем тогда придумали клонирование объекта? |
|||
|
||||
solenko |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
1. Кроме наследования есть еще и композиция
2. Если пропустили, я тут статейку переводил про внедрение зависимостей... Посмотрите -- вам может быть интерестно 3. Что значит "построение страници для типа 1"? Чем занимается класс? Сборкой страници? Что в нем делать авторизации? Если у вас есть существенно разные типы страниц, и вы таки хотите использовать наследование, почему у вас нет:
? Когда я говорил о конкретном примере, я имел в виду нечто более конкретное чем вы привели. Добавлено через 4 минуты и 54 секунды Не поверите, для клонирования объекта ) Вот простейший пример:
А ведь могут быть и сложные правила создания копии объекта, которые можно определить в __clone -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
Chupach1979 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 13.8.2009 Где: Russia Репутация: нет Всего: нет |
А чем Вам действительно не подходит клонирование ? Создаете объекты нужных Вам классов внутри своего и пользуетесь их функциями наздоровье!?
|
|||
|
||||
bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
условное название
нечто среднее. грубо говоря, на входе адрес url, на выходе готовая страница, собранная из разных модулей. авторизация создаёт массив прав для этих модулей для конкретного пользователя, соответственно сборка идёт по разному. фича с авторизацией и разгребанием дополнительных прибабахов занимает примерно столько же места, так что клепать в одно и таскать затем никакого желания нет
да, это можно, но это то что называется от противного. т.е. создавать универсальный класс и делать два потомка с расширениями. но из-за этого придётся переписывать уже существующие.
ну, я уж не знаю как подробнее
да вот, простейший пример. у меня уже открыто соединение в одном объекте, зачем мне создавать ещё одно в пределах одного сеанса ? |
||||||||
|
|||||||||
perloid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 14.11.2008 Репутация: -1 Всего: -1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "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. |