Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача переменных между классами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не вкуриваю...
Angryboy
Отправлено: 25 Января, 2012 - 10:32:20
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Добрый день.

Только постигаю ООП и столкнулся с проблемой передачи переменной между классами.

PHP:
скопировать код в буфер обмена
  1.  
  2. class Text
  3. {
  4.   public $text='TEXT';
  5. }
  6.  
  7. class TestA extends Text
  8. {
  9.   function __construct()
  10.     {
  11.       echo $this->text;
  12.       $this->text='WORK';
  13.     }
  14. }
  15.  
  16. class TestB extends Text
  17. {
  18.   function __construct()
  19.     {
  20.       echo $this->text;
  21.     }
  22. }
  23.  
  24.  
  25. new TestA;
  26. new TestB;
  27.  


Как мне изменить переменную Text::$text, чтобы при унаследовании другими классами значение равнялось последнему присвоенному, а не заданному изначально.

Спасибо всем откликнувшимся))

(Отредактировано автором: 25 Января, 2012 - 10:39:06)

 
 Top
Panoptik
Отправлено: 25 Января, 2012 - 10:39:37
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




PHP:
скопировать код в буфер обмена
  1. class TestB extends TestA
  2. {
  3.   function __construct()
  4.     {
  5.        parent::__construct();
  6.        echo $this->text;
  7.     }
  8. }


по идее должно помочь


-----
Just do it
 
 Top
Angryboy
Отправлено: 25 Января, 2012 - 10:47:10
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Panoptik пишет:
PHP:
скопировать код в буфер обмена
  1. class TestB extends TestA
  2. {
  3.   function __construct()
  4.     {
  5.        parent::__construct();
  6.        echo $this->text;
  7.     }
  8. }


по идее должно помочь


Да это помогает...спасибо)...но я немного поправил код, для правильного отображения вопроса.

class TestB extends Test изменил на class TestB extends Text

Суть зафиксировать значение WORK в $text
 
 Top
Zuldek
Отправлено: 25 Января, 2012 - 10:59:50
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Вы в первом сценарии ожидали вывод разных значений?

1. Вы наследуете классом TestA extends Text
выводите параметр - text, потом переопределяете его внутри класса TestA, теперь он классе TestA равен work
2. Наследуете классом TestB класс Text
выводите значение параметра text класса Text, которое по-прежнему равно TEXT.

Поэтому что вам нужно, чтобы дочерний класс TestB изменил значение параметра text в родительском классе Test?
Либо, если вы просто хотите наследовать значение text=work, то вот у вас в классе TestA. Наследуйте этот параметр из класса TestA и он у вас будет равен Work

(Отредактировано автором: 25 Января, 2012 - 11:00:36)

 
 Top
Angryboy
Отправлено: 25 Января, 2012 - 11:08:02
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Zuldek пишет:
Поэтому что вам нужно, чтобы дочерний класс TestB изменил значение параметра text в родительском классе Test?


Именно...мне нужно чтобы дочерний класс TestA изменил значение в родительском классе Text и при последующих "extends" класса Text значение было уже измененным.

Уфф..с Вашей помощью получилось сформулировать вопрос до конца)))
 
 Top
Мелкий Супермодератор
Отправлено: 25 Января, 2012 - 11:18:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Используйте статичные (static) члены.


-----
PostgreSQL DBA
 
 Top
Angryboy
Отправлено: 25 Января, 2012 - 11:22:41
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Мелкий пишет:
Используйте статичные (static) члены.


Большое спасибо)) Разд*плил теперь)))

Хорошего дня!

(Отредактировано автором: 25 Января, 2012 - 11:29:15)

 
 Top
Zuldek
Отправлено: 25 Января, 2012 - 11:36:19
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Angryboy пишет:
Мелкий пишет:
Используйте статичные (static) члены.


Большое спасибо)) Разд*плил теперь)))

Хорошего дня!


Правильно поставить задачу значит решить её на 80%.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB