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]   

> Без описания
Hyli
Отправлено: 03 Августа, 2011 - 12:51:55
Post Id



Новичок


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


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




Всем доброго времени суток. Имеются два класса:
PHP:
скопировать код в буфер обмена
  1.  
  2. class A
  3. {
  4.         var $a1;
  5.         var $a2;
  6.         function printer()
  7.         {
  8.                 if($this->a1 == 1)
  9.                 {
  10.                         return $this->a2;
  11.                 }
  12.         }
  13. }
  14.  
  15. class B
  16. {
  17.         var $b1;
  18.         function func()
  19.         {
  20.                 $this->b1 = new A();
  21.                 $this->b1->a1 = rand(1,2);
  22.                 if($this->b1->a1 == 1)
  23.                 {
  24.                         $this->b1->a2 = "Something";
  25.                 }
  26.         }
  27. }
  28.  
  29. $C = new B();
  30. $C->func();
  31. $C->b1->printer();
  32.  

Собственно, вопрос: как заставить работать функцию printer? При компиляции ругается вот таким образом:
Цитата:
Fatal error: Call to a member function printer() on a non-object

(Отредактировано автором: 03 Августа, 2011 - 13:01:57)

 
 Top
vlom
Отправлено: 03 Августа, 2011 - 12:55:35
Post Id



Частый посетитель


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


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




обращайся к переменной либо self или же поставь для переменной модификатор public
 
 Top
OrmaJever Модератор
Отправлено: 03 Августа, 2011 - 12:58:05
Post Id



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


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


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




Hyli пишет:
$C = new A();

а вы не ошиблись?
Должно быть


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Hyli
Отправлено: 03 Августа, 2011 - 12:59:10
Post Id



Новичок


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


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




OrmaJever пишет:
Hyli пишет:
$C = new A();

а вы не ошиблись?
Должно быть

Опечатался.
 
 Top
OrmaJever Модератор
Отправлено: 03 Августа, 2011 - 13:02:31
Post Id



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


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


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




опечатался на форуме и проблема актуальна или опечатался в скрипте, исправил, всё заработало, проблема решена?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Hyli
Отправлено: 03 Августа, 2011 - 13:03:09
Post Id



Новичок


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


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




OrmaJever пишет:
опечатался на форуме и проблема актуальна или опечатался в скрипте, исправил, всё заработало, проблема решена?

То, что я написал в шапке, вего лишь пример. Так что, печатался на форуме и проблема актуальна.
 
 Top
OrmaJever Модератор
Отправлено: 03 Августа, 2011 - 13:08:17
Post Id



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


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


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




Hyli ну дак это пример работает. а в оригинале у вас точно чтото не так. Давайте оригинальные классы посмотрим.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Hyli
Отправлено: 03 Августа, 2011 - 13:25:03
Post Id



Новичок


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


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




Всем спасибо, ошибка была найдена. (Пример, действительно, оказался рабочим Голливудская улыбка)
 
 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