ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 01.03.2008, 16:37
Аватар для Piflit
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме:
5128756

Репутация: 2032


Отправить сообщение для Piflit с помощью ICQ
По умолчанию

Цитата:
Сообщение от nc.STRIEM  
когданибудть слышал про конструктор?
у меня в детстве был Lego. ога

это зависит от того, надо ему автоматом задавать значения атрибутов сразу при создании объекта или нет.
 
Ответить с цитированием

  #12  
Старый 01.03.2008, 16:37
Аватар для Евгений Минаев
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 70
Провел на форуме:
1214722

Репутация: 676
По умолчанию

Кто ответит на вопрос без использования php получит респект от всех кто откроет тему, надеюсь на вашу честность, порой полезно себя проверить - "Что выведется в итоге?"

PHP код:
<?php

class firstClass
{
    private 
$_;
    
    function 
setValue $value ) {
        
$this->$value;
    } 
    
}

class 
secondClass extends firstClass
{
    public 
$_;
}

$__s = new firstClass();
$__z = new secondClass();

echo 
$__s->setValue'foo' );
echo 
$__z->setValue'foo' );

echo 
$__z->':' $__s->_;

?>
 
Ответить с цитированием

  #13  
Старый 01.03.2008, 16:45
Аватар для bul.666
bul.666
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме:
3986705

Репутация: 1403


Отправить сообщение для bul.666 с помощью ICQ
По умолчанию

foo:foo

Хотя наверное

foofoo:foo
 
Ответить с цитированием

  #14  
Старый 01.03.2008, 16:47
Аватар для SSB1981
SSB1981
Участник форума
Регистрация: 07.01.2008
Сообщений: 109
Провел на форуме:
214923

Репутация: 17
Отправить сообщение для SSB1981 с помощью ICQ
По умолчанию

Всем спаибо! Разобрался!
Оказывается нужно добовлять "public" пред именем пременной!
 
Ответить с цитированием

  #15  
Старый 01.03.2008, 16:52
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Выведедся соообщение о доступе к закрытому свойству класса, а именно - $__s->_
 
Ответить с цитированием

  #16  
Старый 01.03.2008, 16:55
Аватар для Евгений Минаев
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 70
Провел на форуме:
1214722

Репутация: 676
По умолчанию

Helios прав, выведется только fatal error тк обращаться к private переменным нельзя вне класса, а $__z->_ будет пуст

Последний раз редактировалось Евгений Минаев; 01.03.2008 в 16:57..
 
Ответить с цитированием

  #17  
Старый 01.03.2008, 16:57
Аватар для Macro
Macro
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме:
1845062

Репутация: 1079


По умолчанию

Ссылка в тему...
http://ru2.php.net/manual/ru/language.oop5.visibility.php
Читал-читал и ничего не понял С ООП я не дружу
 
Ответить с цитированием

  #18  
Старый 01.03.2008, 17:16
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Тут больше интересен не доступ к закрытым полям класса, а неудавшийся Паблик Морозов: в одном объекте $__z образуется две переменные с одним именем, но с разными уровнями доступа касательно "подобъектов", чтоли.
Вот по человечески:

Класс firstClass содержит переменную $_ с флагом private, т.е. доступ к ней имеют только методы данного класса и не более.

Класс secondClass тоже содержит переменную $_, но с флагом public. По идее, она должна редефайнить переменную в классе-родителе и наделять ее флагом public (классическое поведение Пабликов Морозовых).

Но не тут-то было.

Благодаря тому, что в firstClass использовался именно private, а не protected (private + доступ из классов-потомков), при инициализации secondClass происходит следующее:

1 инициализация firstClass, появляется private $_;
2 инициализация secondClass, который не имеет доступа к firstClass::_, потому делает себе вторую переменную public $_.

При этом функция setValue имеет влияние не над public secondClass::_, а над private firstClass::_;

Помнится подобная ситуация наблюдается в сях, только там дело касалось указателей на классы и лечилось методами с модификатором virtual
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
BookS: PHP, PERL, MySQL, JavaScript, HTML, ajax, Веб Дизайн M1nK0 PHP, PERL, MySQL, JavaScript 10 27.06.2009 21:35
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ