![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| cr0w |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Вообщем досталась вот такая структура наследования классов:
возможности редактировать class privateParent нет. Как организовать вызов методов с класса class1Helper в классе test, что б значения private переменных класса privateParent не обнулялись при работе в class1Helper? Это сообщение отредактировал(а) cr0w - 9.9.2012, 11:46 |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
private говорит само за себя.
private не наследуется. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Не так все однозначно в этом мире. Есть reflection, который позволяет редактировать даже приватные методы.
Сейчас переменные $a,$b,$c и так неопределены. В каком месте и когда они обнуляются? Желательно примером. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Чего? Можно с этого момента поподробнее?
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| cr0w |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
в классе privateParent есть методы которые работают с этими переменными(н-р, в одну из них собирается CodeCoverage и при создании нового инстанса класса все начинается сначала) |
||||
|
|||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Я счастлив! если добавить пару строчек
получится
Нужно ли объяснять, что правильно демонстрирующий проблему пример будет способствовать получению ответа? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| cr0w |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
во блин народ пошол, нужно ли обьяснять, что это был только приближенный пример. если я выложу листинг всего кода на 15(хотя может и меньше... Это сообщение отредактировал(а) cr0w - 9.9.2012, 21:52 |
|||
|
||||
| Sentox |
|
||||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
И где здесь наследование частногго свойства? Метод доступа к частной переменной в родительском классе да, и ещё раз: где здесь наследование? В контексте ТС и сказано что приват не наследуется, по этому при сказанном условии
нет возможности к ним добраться. Это сообщение отредактировал(а) Sentox - 10.9.2012, 12:59 |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
Вы не видите? Конечно, оно унаследовано, хоть и не доступно. возможность доступа и наследование это как теплое с мягким, смешивать не надо. cr0w, какие классы из приведенных Вы можете редактировать? есть подозрение, что либо class1_Helper это генетический уродец, либо его используют неправильно. |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Противоречивый какой то ответ. Ну да ладно -- http://www.php5.ru/php5/zend2 Что бы не рыться воспроизведу цитату:
Только методам класса в котором они объявлены, то есть фактически только родному классу и никому более, на то они частные. Как можно утверждать что здесь произошло наследование, когда просто в родительский класс был добавлен механизм доступа к частному свойству для использования в дочерних классах. То что в PHP такой доступ к ним это Вы точно подчеркнули
Кстати это именно я и подчеркнул в своём посте и не понятен Ваш ответ, так как: Конечно, оно унаследовано, хоть и не доступно !== возможность доступа и наследование это как теплое с мягким, смешивать не надо Это сообщение отредактировал(а) Sentox - 10.9.2012, 15:18 |
||||||
|
|||||||
| cr0w |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
все, кроме privateParent |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
cr0w, вам нужно в итоге работать с тем объектом, для которого вызываете хелпер, а не с новым
например так http://codepad.org/WcSOYXhj или так http://codepad.org/rXGwlmiI Sentox,
читал я этот
я всего лишь сказал, что приватный член унаследован. это означает, что он в виде данных (пусть недоступных непосредственно) присутствует во всех объектах подкласса. Если нечто (константа, переменная, метод) присутствует в базовом классе, оно есть и в наследуемом. в этом суть наследования. У унаследованных членов есть правила видимости/доступа: некоторые видны и доступны не всем. Механизм наследования и правила видимости/доступа суть вещи разные, одно прекрасно может быть без другого, так что не надо их смешивать. Это не так. Я понимаю, что Вы понимаете все точно так же, мы занялись игрой слов. Просто для конкретного разговора нужна точная терминология. |
||||
|
|||||
| cr0w |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Спасибо за помощь, оба варинта работают, правда во втором случае есть ошибка 'Serialization of 'Closure' is not allowed', но это решаемый момент для меня |
|||
|
||||
![]()
|
| Правила форума "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. |