Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.03.2008, 16:37
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от nc.STRIEM
когданибудть слышал про конструктор?
у меня в детстве был Lego. ога
это зависит от того, надо ему автоматом задавать значения атрибутов сразу при создании объекта или нет.
|
|
|

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->_;
?>
|
|
|

01.03.2008, 16:45
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
foo:foo
Хотя наверное
foofoo:foo
|
|
|

01.03.2008, 16:47
|
|
Участник форума
Регистрация: 07.01.2008
Сообщений: 109
Провел на форуме: 214923
Репутация:
17
|
|
Всем спаибо! Разобрался!
Оказывается нужно добовлять "public" пред именем пременной!
|
|
|

01.03.2008, 16:52
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Выведедся соообщение о доступе к закрытому свойству класса, а именно - $__s->_
|
|
|

01.03.2008, 16:55
|
|
Познающий
Регистрация: 12.11.2007
Сообщений: 70
Провел на форуме: 1214722
Репутация:
676
|
|
Helios прав, выведется только fatal error тк обращаться к private переменным нельзя вне класса, а $__z->_ будет пуст
Последний раз редактировалось Евгений Минаев; 01.03.2008 в 16:57..
|
|
|

01.03.2008, 16:57
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
Ссылка в тему...
http://ru2.php.net/manual/ru/language.oop5.visibility.php
Читал-читал и ничего не понял  С ООП я не дружу
|
|
|

01.03.2008, 17:16
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Тут больше интересен не доступ к закрытым полям класса, а неудавшийся Паблик Морозов: в одном объекте $__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)
|
|
|
|