![]() |
|
Модераторы: 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 |
ну да. не спорю |
|||
|
||||
| Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: 1 Всего: 56 |
Защищенные элементы классов скорее всего полезны при работе в группе, когда разные программисты пишут различные участки кода, модули. Чтобы не нарушалась целостность данных и код был более удобным для использования.
ИМХО |
|||
|
||||
| oxygen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 4.5.2005 Где: Москва, СВАО Репутация: нет Всего: 3 |
ппкс ибо имею опыт. В основном для защиты от перекрытия объявленных переменных. Хотя есть ISO конечно, но всегда может случиться shit |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Но ведь без них можно и обойтись?
-------------------- ГЫ... |
|||
|
||||
| Illuminaty |
|
|||
![]() /*Антон Захаров*/ ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1238 Регистрация: 19.3.2005 Где: Россия, Казань Репутация: 1 Всего: 56 |
Смотря над каким проектом работаешь. Если проект небольшой и ты делаешь его один, то можно про них забыть, иначе см. предыдущий пост Если хочешь держать свой проект под контролем, попробуй их использовать Это сообщение отредактировал(а) Illuminaty - 9.5.2005, 14:19 |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 18 |
Для себя...хм... Вот вроде въехал в них, привыкаю.... Я раньше вообще классы не пользовал, тоже не понимал зачем они нуны, зато теперь почти любой проект без них не делаю... Всем пасиб, буду привыкать, заоодно пойму для чего они на практике полезны...
-------------------- ГЫ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |