Конструктор выполняется дважды!

flash-boss

Новичок
Автор оригинала: _RVK_
А что значит "работало"? Что ты хочешь что бы там происходило?
Чтобы в классе-потомке можно было бы пользоваться $this->ip, без перезагрузки "родителя".
 

_RVK_

Новичок
Кстати твой код работать вообще никак не будет.

-~{}~ 07.12.05 17:19:

Чтобы в классе-потомке можно было бы пользоваться $this->ip, без перезагрузки "родителя".
Пользуйся на здоровье. Он унаследован.
 

_RVK_

Новичок
Итак, попытаюсь привести в порядок твои мысли...

Смотри. Ты обявил класс и его потомка. Теперь, сордавая экземпляр класса родителя, ты меняешь его свойство в конструкторе. Но! В потомке свойство не тронуто, потому как это абсолютно другой объект находящийчя в своеей области памяти(а в твоем примере так его вообще еще нет), и изменения в родителе никак не затрагивают потомка. Если ты хочешь что бы изменение свойства влияло на все объекты данного класса для этого существуют статические переменные и функции.
 

flash-boss

Новичок
когда делается echo без перезагрузки -> ничего не выводится, как только перезагрузка - ok............

-~{}~ 07.12.05 17:26:

Автор оригинала: _RVK_
Итак, попытаюсь привести в порядок твои мысли...

Смотри. Ты обявил класс и его потомка. Теперь, сордавая экземпляр класса родителя, ты меняешь его свойство в конструкторе. Но! В потомке свойство не тронуто, потому как это абсолютно другой объект находящийчя в своеей области памяти(а в твоем примере так его вообще еще нет), и изменения в родителе никак не затрагивают потомка. Если ты хочешь что бы изменение свойства влияло на все объекты данного класса для этого существуют статические переменные и функции.
Ага, уже чего-то проясняется....
 

_RVK_

Новичок
>когда делается echo без перезагрузки -> ничего не выводится, как только перезагрузка - ok............

Так и должно быть. Почему я тебе вначале объяснил, и здесь повторил.
 

Gas

может по одной?
flash-boss
в PHP родительские конструкторы _не вызываются автоматически_. Ты должен их вызывать сам.
 

svetasmirnova

маленький монстрик
_RVK_
ты гонишь. var_dump($this) в родителе сделай
flash-boss
На мой последний вопрос ответь, please
 

flash-boss

Новичок
Угу, усё понял...thanks to all.....

-~{}~ 07.12.05 17:30:

Автор оригинала: svetasmirnova
_RVK_
ты гонишь. var_dump($this) в родителе сделай
flash-boss
На мой последний вопрос ответь, please
последний вопрос? - var_dump?

-~{}~ 07.12.05 17:34:

"ЧТо не работает?", да хотя бы echo, я вообще не могу пользоваться этим параметром (в дочернем классе)....
 

_RVK_

Новичок
svetasmirnova
И что я там должен увидеть?

-~{}~ 07.12.05 17:41:

Gas
>в PHP родительские конструкторы _не вызываются автоматически_.

А где вызываются?
 
flash-boss
видишь разницу между свойство "определёно" или "продекларировано" ?
PHP:
class class2 extends class1 { 

public function __construct() 
{ 
 echo $this->ip;// статус здесь?
 parent::__construct(); 
 echo $this->ip;// и статус здесь?
} 

}
скажи, плз состояние $this->ip в первом и втором случае....
 

_RVK_

Новичок
Loshadka
Помоему задача решена. А терменология дело десятое.
 
_RVK_
да, но, имхо, судя по фразе:
> "ЧТо не работает?", да хотя бы echo, я вообще не могу пользоваться этим параметром (в дочернем классе)....
задача решена не для всех :(
 

svetasmirnova

маленький монстрик
_RVK_
Мне за тебя распечатать и на пальцах объяснять?
>А терменология дело десятое.
Это не терминология. Это решение ваших тараканов.
flash-boss
Вопрос, обращённый к *тебе*. Впрочем, вникай в этот пост Loshadka: http://phpclub.ru/talk/showthread.php?postid=552463#post552463
 

_RVK_

Новичок
>Мне за тебя распечатать и на пальцах объяснять?

Я то уже выполнил пример. Ничего нового я там для себя не увидел. Какая моя фраза тебе показалась неверной?
 

svetasmirnova

маленький монстрик
Теперь, сордавая экземпляр класса родителя, ты меняешь его свойство в конструкторе. Но! В потомке свойство не тронуто, потому как это абсолютно другой объект находящийчя в своеей области памяти(а в твоем примере так его вообще еще нет), и изменения в родителе никак не затрагивают потомка. Если ты хочешь что бы изменение свойства влияло на все объекты данного класса для этого существуют статические переменные и функции.
 

_RVK_

Новичок
svetasmirnova
Извини, но не пойму. Что здесь не так? Ты можешь пальцем ткнуть в конкретную фразу?
 

svetasmirnova

маленький монстрик
Я не поняла зачем автору топика
>что бы изменение свойства влияло на все объекты данного класса.
Далее. Вернёмся к первому посту автора топика (он там отделил код; а в остальных добавил лишний: путаннее только стало). См. конструктор класса 2:
class class2 extends class1 {
public function __construct()
{
echo $this->ip;//не работает...
Вот здесь $this->ip - это null, потому что в родителе оно уже продекларировано, но ещё нигде не определено. Если бы он написал в родителе:
class class1 {
public $ip = 'something';
...
}
Строчка "не работает... " вывела бы (сюрпириз?) something.

Т.е. проблемы у человека... Впрочем, я уже затрудняюсь сказать, в чём его проблемы :)
 

_RVK_

Новичок
svetasmirnova
Я полностью согласен. Заметь я говорю об объектах а не о их классах. И действительно, изменение поля в одном объекте не изменит поля в другом, даже если это обект класса-потомка. А из примера следовало что автор удиаляется почему, изменив в конструкторе объекта родительского класса свойство, это свойство оказывается пустым у экземпляра потомка. Я и пояснил эту ситуацию. Ты видимо просто меня не так поняла.
 
Сверху