| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Защищённые елементы в классах |
| Автор: AntonioBanderaz 5.5.2005, 05:10 |
| Чем отличаються защищенные и не защищённые элементы класса, и как это может быть полезно на практике? А то я что-то не дорубаю.... Спа. |
| Автор: skalex 5.5.2005, 08:04 |
| Ну начнем с того, что эти вещи появляются только в 5-ой версии PHP. В низших версиях все члены класса являются открытыми, что не очень хорошо с точки зрения ООП. Обычно к переменным класса доступ извне закрывают (private) и все манипуляции с ними производят с помощью методов этого класса. |
| Автор: IZ@TOP 5.5.2005, 08:07 | ||
А мне вот когда 5 РНР вышел стало даже как то смешно - ну сделал я метод/свойство класса приватным, а то-то взял и код изменил и получил доступ... это же не компиленная программа а сценарий для исполнения в текстовом файле |
| Автор: skalex 5.5.2005, 08:20 |
| Ну так и к исходникам компилируемой программы кто то может получить доступ ... |
| Автор: IZ@TOP 5.5.2005, 09:28 |
| В общем это философия такая |
| Автор: AntonioBanderaz 5.5.2005, 15:17 | ||
Private я знаю зачем, а вот
Что этот protected даёт? |
| Автор: IZ@TOP 5.5.2005, 16:34 | ||
Вроде ошибаюсь... но кажется что защищает от переназначения... |
| Автор: Mal Hack 5.5.2005, 17:43 | ||
IZ@TOP
protected вроде как ограничивает (отрубает) возможность вызова из вне, т.е. работать с протектедом могут только базовый класс и дочерные объекты... http://ru2.php.net/manual/ru/language.oop5.visibility.php |
| Автор: Joes 5.5.2005, 17:55 |
| Дескрипторы Private, Public и Protected В PHP4 все методы и переменные внутри объекта были доступны извне, другими словами все методы и переменные всегда были открытыми. В PHP5 вводится три дескриптора для осуществления контроля над доступом к переменным и методам: Public, Protected и Private. * Public (открытый): Метод/переменная доступны из любого места в коде. * Private (закрытый): Закрытые методы или переменные доступны только внутри класса. * Protected (защищённый): Защищённые методы или переменные доступны только внутри класса, где они были объявлены и из его производных классов. |
| Автор: AntonioBanderaz 6.5.2005, 06:46 | ||||
А почему тогда выполняется такой код?
и даже так
ну и где доступ только из внутренних функций? У меня вывел в обоих случаях Antonio Banderaz.... Мож глюк? Или я что не так накодил... |
| Автор: oxygen 8.5.2005, 00:53 | ||
| ну так все правильно $w1 и $w2 являются объектами классов Name и NewName соответственно. Взаимодействие происходит внутри класса. Вот такой вызов по идее не должен работать
|
| Автор: AntonioBanderaz 8.5.2005, 01:17 |
| А всё, я допёр, всем спасибо!!!! |
| Автор: Irokez 8.5.2005, 10:34 | ||
по-моему это в основном будет использоваться в модулях и встроенных классах |
| Автор: IZ@TOP 8.5.2005, 13:40 |
| Irokez, но если исходники не скомпилины любой кто их использует может получить доступ к коду и изменить его. Я ведь прав? В любом случае это относится к коммерческим продуктам. |
| Автор: Irokez 8.5.2005, 18:15 | ||
ну да. не спорю |
| Автор: Illuminaty 8.5.2005, 18:36 |
| Защищенные элементы классов скорее всего полезны при работе в группе, когда разные программисты пишут различные участки кода, модули. Чтобы не нарушалась целостность данных и код был более удобным для использования. ИМХО |
| Автор: oxygen 8.5.2005, 20:28 | ||
ппкс ибо имею опыт. В основном для защиты от перекрытия объявленных переменных. Хотя есть ISO конечно, но всегда может случиться shit |
| Автор: AntonioBanderaz 9.5.2005, 13:54 |
| Но ведь без них можно и обойтись? |
| Автор: Illuminaty 9.5.2005, 14:17 | ||
Смотря над каким проектом работаешь. Если проект небольшой и ты делаешь его один, то можно про них забыть, иначе см. предыдущий пост Если хочешь держать свой проект под контролем, попробуй их использовать |
| Автор: AntonioBanderaz 10.5.2005, 00:34 |
| Для себя...хм... Вот вроде въехал в них, привыкаю.... Я раньше вообще классы не пользовал, тоже не понимал зачем они нуны, зато теперь почти любой проект без них не делаю... Всем пасиб, буду привыкать, заоодно пойму для чего они на практике полезны... |