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]   

> Без описания
kca.99
Отправлено: 10 Мая, 2015 - 07:36:39
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2015  


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




Добрый день. Подскажите, как изменить свойство в родительском классе.



PHP:
скопировать код в буфер обмена
  1. class My_Parent {
  2.     protected $name;
  3.    
  4.     public function __construct(){
  5.         $this->name="Ирина";
  6.     }
  7. }
  8.  
  9.  
  10. class My_Children_1 extends My_Parent {
  11.    
  12.     public function Echo_Name(){
  13.         echo $this->name.'<br><br>';
  14.     }
  15. }
  16.  
  17. class My_Children_2 extends My_Parent {
  18.  
  19.     public function Set_Name($new_name){
  20.         $this->name=$new_name;
  21.     }
  22. }
  23.  
  24.  
  25. $Children_1 = New My_Children_1();
  26. $Children_2 = New My_Children_2();
  27.  
  28.  
  29. $Children_1->Echo_Name();            // Ирина.
  30. $Children_2->Set_Name("Николай");
  31. $Children_1->Echo_Name();            // Ирина.  Почему??????
  32.  
 
 Top
exlant
Отправлено: 10 Мая, 2015 - 08:40:16
Post Id



Посетитель


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


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




потому что $Children_1 и $Children_2 это разные объекты! Что бы было Николай, в этом случаи нужно использовать protected static $name
 
 Top
kca.99
Отправлено: 10 Мая, 2015 - 08:44:55
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2015  


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




PHP:
скопировать код в буфер обмена
  1. class My_Parent {
  2.     protected static $name;
  3.    
  4.     public function __construct(){
  5.         $this->name="Ирина";
  6.     }
  7. }
  8.  
  9. class My_Children_1 extends My_Parent {
  10.    
  11.     public function Echo_Name(){
  12.         echo $this->name.'<br><br>';
  13.     }
  14. }
  15.  
  16. class My_Children_2 extends My_Parent {
  17.  
  18.     public function Set_Name($new_name){
  19.         $this->name=$new_name;
  20.     }
  21. }
  22.  
  23.  
  24. $Children_1 = New My_Children_1();
  25. $Children_2 = New My_Children_2();
  26.  
  27.  
  28. $Children_1->Echo_Name();      // Ирина
  29. $Children_2->Set_Name("Николай");
  30. $Children_1->Echo_Name();      // Снова Ирина
  31.  
  32.  
  33.  

(Добавление)
не помогло. Можно пример
 
 Top
exlant
Отправлено: 10 Мая, 2015 - 08:57:52
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1. class My_Parent {
  2.     protected static $name;
  3.    
  4.     public function __construct(){
  5.         self::$name="Ирина";
  6.     }
  7. }
  8.  
  9.  
  10. class My_Children_1 extends My_Parent {
  11.    
  12.     public function Echo_Name(){
  13.         echo My_Parent::$name.'<br><br>';
  14.     }
  15. }
  16.  
  17. class My_Children_2 extends My_Parent {
  18.  
  19.     public function Set_Name($new_name){
  20.         My_Parent::$name=$new_name;
  21.     }
  22. }
  23.  
  24.  
  25. $Children_1 = New My_Children_1();
  26. $Children_2 = New My_Children_2();
  27.  
  28.  
  29. $Children_1->Echo_Name();            // Ирина.
  30. $Children_2->Set_Name("Николай");
  31. $Children_1->Echo_Name();  
 
 Top
kca.99
Отправлено: 10 Мая, 2015 - 09:04:24
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2015  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. результат:
  3.  
  4. $Children_1->Echo_Name();            // пусто
  5. $Children_2->Set_Name("Николай");
  6. $Children_1->Echo_Name();           // Николай
  7.  
  8.  

(Добавление)
self:: не подставил.
Всё работает. Спасибо!
 
 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