![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Чем отличаються защищенные и не защищённые элементы класса, и как это может быть полезно на практике?
А то я что-то не дорубаю.... Спа. -------------------- ГЫ... |
|||
|
||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: нет Всего: 23 |
Ну начнем с того, что эти вещи появляются только в 5-ой версии PHP. В низших версиях все члены класса являются открытыми, что не очень хорошо с точки зрения ООП. Обычно к переменным класса доступ извне закрывают (private) и все манипуляции с ними производят с помощью методов этого класса.
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
А мне вот когда 5 РНР вышел стало даже как то смешно - ну сделал я метод/свойство класса приватным, а то-то взял и код изменил и получил доступ... это же не компиленная программа а сценарий для исполнения в текстовом файле -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: нет Всего: 23 |
Ну так и к исходникам компилируемой программы кто то может получить доступ ...
|
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
В общем это философия такая
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Private я знаю зачем, а вот
Что этот protected даёт? -------------------- ГЫ... |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Вроде ошибаюсь... но кажется что защищает от переназначения... -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
IZ@TOP
protected вроде как ограничивает (отрубает) возможность вызова из вне, т.е. работать с протектедом могут только базовый класс и дочерные объекты... http://ru2.php.net/manual/ru/language.oop5.visibility.php |
|||
|
||||
| Joes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 15.11.2004 Репутация: нет Всего: 7 |
Дескрипторы Private, Public и Protected
В PHP4 все методы и переменные внутри объекта были доступны извне, другими словами все методы и переменные всегда были открытыми. В PHP5 вводится три дескриптора для осуществления контроля над доступом к переменным и методам: Public, Protected и Private. * Public (открытый): Метод/переменная доступны из любого места в коде. * Private (закрытый): Закрытые методы или переменные доступны только внутри класса. * Protected (защищённый): Защищённые методы или переменные доступны только внутри класса, где они были объявлены и из его производных классов. |
|||
|
||||
| AntonioBanderaz |
|
||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
А почему тогда выполняется такой код?
и даже так
ну и где доступ только из внутренних функций? У меня вывел в обоих случаях Antonio Banderaz.... Мож глюк? Или я что не так накодил... -------------------- ГЫ... |
||||
|
|||||
| oxygen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.5.2005 Где: Москва, СВАО Репутация: нет Всего: 3 |
ну так все правильно
$w1 и $w2 являются объектами классов Name и NewName соответственно. Взаимодействие происходит внутри класса. Вот такой вызов по идее не должен работать
|
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
А всё, я допёр, всем спасибо!!!!
-------------------- ГЫ... |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 4 Всего: 53 |
по-моему это в основном будет использоваться в модулях и встроенных классах |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Irokez, но если исходники не скомпилины любой кто их использует может получить доступ к коду и изменить его. Я ведь прав? В любом случае это относится к коммерческим продуктам.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 4 Всего: 53 |
ну да. не спорю |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |