| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вопрос по ООП, Вызов метода другого класса |
| Автор: cr0w 6.9.2012, 18:27 | ||
Вообщем досталась вот такая структура наследования классов:
возможности редактировать class privateParent нет. Как организовать вызов методов с класса class1Helper в классе test, что б значения private переменных класса privateParent не обнулялись при работе в class1Helper? |
| Автор: Sentox 6.9.2012, 19:59 |
| private говорит само за себя. private не наследуется. |
| Автор: Fortop 8.9.2012, 03:27 | ||
Чего? Можно с этого момента поподробнее?
|
| Автор: cr0w 9.9.2012, 11:42 | ||||
в классе privateParent есть методы которые работают с этими переменными(н-р, в одну из них собирается CodeCoverage и при создании нового инстанса класса все начинается сначала) |
| Автор: ksnk 9.9.2012, 15:29 | ||||||
Я счастлив! если добавить пару строчек
получится
Нужно ли объяснять, что правильно демонстрирующий проблему пример будет способствовать получению ответа? |
| Автор: cr0w 9.9.2012, 21:47 | ||||||||
во блин народ пошол, нужно ли обьяснять, что это был только приближенный пример. если я выложу листинг всего кода на 15(хотя может и меньше... |
| Автор: Sentox 10.9.2012, 12:58 | ||||||||
И где здесь наследование частногго свойства? Метод доступа к частной переменной в родительском классе да, и ещё раз: где здесь наследование? В контексте ТС и сказано что приват не наследуется, по этому при сказанном условии
нет возможности к ним добраться. |
| Автор: baldina 10.9.2012, 14:29 |
Вы не видите? Конечно, оно унаследовано, хоть и не доступно. возможность доступа и наследование это как теплое с мягким, смешивать не надо. cr0w, какие классы из приведенных Вы можете редактировать? есть подозрение, что либо class1_Helper это генетический уродец, либо его используют неправильно. |
| Автор: Sentox 10.9.2012, 15:12 | ||||||
Противоречивый какой то ответ. Ну да ладно -- http://www.php5.ru/php5/zend2 Что бы не рыться воспроизведу цитату:
Только методам класса в котором они объявлены, то есть фактически только родному классу и никому более, на то они частные. Как можно утверждать что здесь произошло наследование, когда просто в родительский класс был добавлен механизм доступа к частному свойству для использования в дочерних классах. То что в PHP такой доступ к ним это Вы точно подчеркнули
Кстати это именно я и подчеркнул в своём посте и не понятен Ваш ответ, так как: Конечно, оно унаследовано, хоть и не доступно !== возможность доступа и наследование это как теплое с мягким, смешивать не надо |
| Автор: cr0w 10.9.2012, 16:18 | ||
все, кроме privateParent |
| Автор: baldina 10.9.2012, 19:02 | ||||
| cr0w, вам нужно в итоге работать с тем объектом, для которого вызываете хелпер, а не с новым например так http://codepad.org/WcSOYXhj или так http://codepad.org/rXGwlmiI Sentox,
читал я этот
я всего лишь сказал, что приватный член унаследован. это означает, что он в виде данных (пусть недоступных непосредственно) присутствует во всех объектах подкласса. Если нечто (константа, переменная, метод) присутствует в базовом классе, оно есть и в наследуемом. в этом суть наследования. У унаследованных членов есть правила видимости/доступа: некоторые видны и доступны не всем. Механизм наследования и правила видимости/доступа суть вещи разные, одно прекрасно может быть без другого, так что не надо их смешивать. Это не так. Я понимаю, что Вы понимаете все точно так же, мы занялись игрой слов. Просто для конкретного разговора нужна точная терминология. |
| Автор: cr0w 12.9.2012, 14:08 | ||
Спасибо за помощь, оба варинта работают, правда во втором случае есть ошибка 'Serialization of 'Closure' is not allowed', но это решаемый момент для меня |