ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 01.03.2008, 16:37
Piflit
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
С нами: 10393869

Репутация: 2032


По умолчанию

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

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

  #12  
Старый 01.03.2008, 16:37
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 69
С нами: 9734726

Репутация: 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
Banned
Регистрация: 06.06.2006
Сообщений: 944
С нами: 10489346

Репутация: 1403


По умолчанию

foo:foo

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

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

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

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

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

  #15  
Старый 01.03.2008, 16:52
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
С нами: 10169427

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

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

  #16  
Старый 01.03.2008, 16:55
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 69
С нами: 9734726

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

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

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

  #17  
Старый 01.03.2008, 16:57
Macro
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
С нами: 10261766

Репутация: 1079


По умолчанию

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

  #18  
Старый 01.03.2008, 17:16
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
С нами: 10169427

Репутация: 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 186 21.02.2010 02:41
BookS: PHP, PERL, MySQL, JavaScript, HTML, ajax, Веб Дизайн M1nK0 PHP 10 27.06.2009 21:35
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44



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


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




ANTICHAT ™ © 2001- Antichat Kft.