Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защищённые елементы в классах, Что это??? 
:(
    Опции темы
AntonioBanderaz
Дата 5.5.2005, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Чем отличаються защищенные и не защищённые элементы класса, и как это может быть полезно на практике?
А то я что-то не дорубаю.... Спа. smile


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
skalex
Дата 5.5.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Ну начнем с того, что эти вещи появляются только в 5-ой версии PHP. В низших версиях все члены класса являются открытыми, что не очень хорошо с точки зрения ООП. Обычно к переменным класса доступ извне закрывают (private) и все манипуляции с ними производят с помощью методов этого класса.
PM   Вверх
IZ@TOP
Дата 5.5.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(Mace @ 5.5.2005, 09:04)
Обычно к переменным класса доступ извне закрывают (private) и все манипуляции с ними производят с помощью методов этого класса.

А мне вот когда 5 РНР вышел стало даже как то смешно - ну сделал я метод/свойство класса приватным, а то-то взял и код изменил и получил доступ... это же не компиленная программа а сценарий для исполнения в текстовом файле smile Если конечно не юзать Zend Encoder и Turk MMCache smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
skalex
Дата 5.5.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Ну так и к исходникам компилируемой программы кто то может получить доступ ... smile
PM   Вверх
IZ@TOP
Дата 5.5.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



В общем это философия такая smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
AntonioBanderaz
Дата 5.5.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



Private я знаю зачем, а вот
Код

class HZ {
protected function getName() {
 ////
}
}


Что этот protected даёт?


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
IZ@TOP
Дата 5.5.2005, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(AntonioBanderaz @ 5.5.2005, 16:17)
protected function getName() {
////
}

Вроде ошибаюсь... но кажется что защищает от переназначения...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 5.5.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



IZ@TOP
Цитата(IZ @ 5.5.2005, 17:34)
Вроде ошибаюсь... но кажется что защищает от переназначения...

protected вроде как ограничивает (отрубает) возможность вызова из вне, т.е. работать с протектедом могут только базовый класс и дочерные объекты...
http://ru2.php.net/manual/ru/language.oop5.visibility.php
PM ICQ   Вверх
Joes
Дата 5.5.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 15.11.2004

Репутация: нет
Всего: 7



Дескрипторы Private, Public и Protected

В PHP4 все методы и переменные внутри объекта были доступны извне, другими словами все методы и переменные всегда были открытыми. В PHP5 вводится три дескриптора для осуществления контроля над доступом к переменным и методам: Public, Protected и Private.

* Public (открытый): Метод/переменная доступны из любого места в коде.
* Private (закрытый): Закрытые методы или переменные доступны только внутри класса.
* Protected (защищённый): Защищённые методы или переменные доступны только внутри класса, где они были объявлены и из его производных классов.
PM MAIL   Вверх
AntonioBanderaz
Дата 6.5.2005, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



А почему тогда выполняется такой код?

Код

<?php
class Name {
public $Name;

public function __construct($name) {
          $this->Name = $name;
}
protected function getName() {
           return ($this->Name);
}
}



$w1 = new Name('Antonio Banderaz','0');
echo $w1->getName();



и даже так

Код

<?php
class Name {
public $Name;

public function __construct($name) {
          $this->Name = $name;
}
protected function getName() {
           return ($this->Name);
}
}

class newName extends Name {
public function getName() {
            return (parent::getName());
}
}

$w1 = new Name('Antonio Banderaz');
$w2 = new newName('Antonio Banderaz');
echo $w2->getName();
echo $w1->getName();


ну и где доступ только из внутренних функций? У меня вывел в обоих случаях Antonio Banderaz.... Мож глюк? Или я что не так накодил...


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
oxygen
Дата 8.5.2005, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 4.5.2005
Где: Москва, СВАО

Репутация: нет
Всего: 3



ну так все правильно
$w1 и $w2 являются объектами классов Name и NewName соответственно. Взаимодействие происходит внутри класса.

Вот такой вызов по идее не должен работать

Код

class Name {
  function protected getName($var) {
     print $var;
  }
}

$var = Name::getName("Hello world");

PM MAIL WWW ICQ   Вверх
AntonioBanderaz
Дата 8.5.2005, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 18



А всё, я допёр, всем спасибо!!!!


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
Irokez
Дата 8.5.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 4
Всего: 53



Цитата(IZ @ 5.5.2005, 08:07)
А мне вот когда 5 РНР вышел стало даже как то смешно - ну сделал я метод/свойство класса приватным, а то-то взял и код изменил и получил доступ... это же не компиленная программа а сценарий для исполнения в текстовом файле smile Если конечно не юзать Zend Encoder и Turk MMCache smile

по-моему это в основном будет использоваться в модулях и встроенных классах
PM   Вверх
IZ@TOP
Дата 8.5.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Irokez, но если исходники не скомпилины любой кто их использует может получить доступ к коду и изменить его. Я ведь прав? В любом случае это относится к коммерческим продуктам.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Irokez
Дата 8.5.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 4
Всего: 53



Цитата(IZ @ 8.5.2005, 13:40)
Irokez, но если исходники не скомпилины любой кто их использует может получить доступ к коду и изменить его. Я ведь прав?

ну да. не спорю
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0678 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.