![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
есть такой пример:
результат работы:
, но если пишу:
то получаю:
суть в том, что хочу работать со статическими классами, которые унаследуют общий функционал от класса-родителя. но общая функция, получается, опирается на родительские данные, что не есть гуд. можно ли как-то извернуться и отнаследовать функционал для статических классов, не дублируя общий функционал? |
||||||||
|
|||||||||
| s0lman |
|
|||
|
Белый и лохматый ![]() ![]() Профиль Группа: Участник Сообщений: 637 Регистрация: 1.11.2007 Где: Ukraine Репутация: 9 Всего: 29 |
static ?
-------------------- Когда я уже выучусь на волшебника? :( |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
вы странного желаете: вне объектного контекста полиморфизм не работает
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
жжжаль. а ведь почти получилось. при наследовании от абстрактного класса они получают независимые свойства. почему бы им не получить и независимые методы. может есть какой-нибудь хук? а вообще, можно ли как-то отнаследоваться от чего-то в статический класс? я недавно краем глаза какую-то новую фичу заметил в пхп, что-то вроде "повторного использования кода", но не наследование. но быстрым темпом не осилил. может есть ссылочка на качественное разъяснение? Добавлено через 2 минуты и 23 секунды вот это http://php.net/manual/en/language.oop5.traits.php есть материал поразжёванее? Добавлено через 3 минуты и 44 секунды правда, мне бы хотелось всё же решить задачу для php5.3 |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Трейты тут не помогут, это что-то между интерфейсом и абстрактным классом. Я бы охарактеризовал их как "интерфейс с конкретной реализацией методов, подключаемых к n-нному количеству классов".
Для реализации же того, что задумано нужно использовать позднее статическое связывание (late static binding). Если заменить в абстрактном методе self::$a на static::$a - получим PROFIT! |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Aliance, в какое место предлагается запихать static, если bars80080 хочет писать так
? Для статика надо оборачивать свойства в вызов какой то функции... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Либо я не правильно понял, либо ТС хочет чтобы методы обращались в свойствам не родителя, а потомков.
|
|||
|
||||
| bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ох, данихренжсебе! получилось
результат:
Добавлено через 4 минуты и 14 секунд однако, я проглядел один момент. вариант:
возвращает
то есть без специального объявления свойства, происходит обращение к родительскому. можно ли это обойти? то есть не указывая специально, работать со свойствами наследника. не вижу куда там ещё можно зануть static, ведь и так уже указано |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
так ведь здесь статическая переменная лишь одна (в базовом классе). а когда объявляется переменная с тем же именем в производном классе, это еще одна переменная. кстати вот вам пример с использованием трейтов и LSB: http://ideone.com/Za4Gh5
используйте функции |
|||
|
||||
![]()
|
| Правила форума "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. |