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
Форумы портала PHP.SU :: Версия для печати :: Класс внутри класса
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Класс внутри класса

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

1. Hyli - 03 Августа, 2011 - 12:51:55 - перейти к сообщению
Всем доброго времени суток. Имеются два класса:
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
2. vlom - 03 Августа, 2011 - 12:55:35 - перейти к сообщению
обращайся к переменной либо self или же поставь для переменной модификатор public
3. OrmaJever - 03 Августа, 2011 - 12:58:05 - перейти к сообщению
Hyli пишет:
$C = new A();

а вы не ошиблись?
Должно быть
4. Hyli - 03 Августа, 2011 - 12:59:10 - перейти к сообщению
OrmaJever пишет:
Hyli пишет:
$C = new A();

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

Опечатался.
5. OrmaJever - 03 Августа, 2011 - 13:02:31 - перейти к сообщению
опечатался на форуме и проблема актуальна или опечатался в скрипте, исправил, всё заработало, проблема решена?
6. Hyli - 03 Августа, 2011 - 13:03:09 - перейти к сообщению
OrmaJever пишет:
опечатался на форуме и проблема актуальна или опечатался в скрипте, исправил, всё заработало, проблема решена?

То, что я написал в шапке, вего лишь пример. Так что, печатался на форуме и проблема актуальна.
7. OrmaJever - 03 Августа, 2011 - 13:08:17 - перейти к сообщению
Hyli ну дак это пример работает. а в оригинале у вас точно чтото не так. Давайте оригинальные классы посмотрим.
8. Hyli - 03 Августа, 2011 - 13:25:03 - перейти к сообщению
Всем спасибо, ошибка была найдена. (Пример, действительно, оказался рабочим Голливудская улыбка)

 

Powered by ExBB FM 1.0 RC1