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. Maskca - 29 Мая, 2011 - 13:36:03 - перейти к сообщению
Здравствуйте, есть 2 класса. В одном переменной присваивается некое значение, а второй должен вывести это значение, но у меня что-то не получается, я делаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. class a{
  3.  
  4. var $data;
  5. function Data() {
  6.        
  7. $this->data="aaa";
  8.  
  9. $getdata = new b;
  10. $getdata->getData();
  11.  
  12. }
  13. }
  14. class b
  15. {
  16. function getData() {
  17. $data = new a; 
  18. echo $data->data;
  19.        
  20. }
  21. }
  22.  
  23. $a = new a;
  24. $a->Data();
  25.  
  26.  


Подскажите, как это исправить?
2. DeepVarvar - 29 Мая, 2011 - 13:54:47 - перейти к сообщению
Maskca внутри класса "а" вы создаете новый (другой) экземпляр класса "b", а в том создаете еще один новый экземпляр класса "а" без вызова метода Data...
Естественно переменная пуста..
3. Maskca - 29 Мая, 2011 - 14:50:31 - перейти к сообщению
А как тогда сделать?
Когда еще вызываю метод дата, то не грузится
4. OrmaJever - 29 Мая, 2011 - 14:54:37 - перейти к сообщению
Нужна исходная задача, вам же не переменые выводить надо? Закатив глазки
Если вызывать метод data из класа Б то это бесконечный цыкл.
(Добавление)
почему например нельзя зделать так
PHP:
скопировать код в буфер обмена
  1. class a{
  2.  
  3. var $data;
  4. function Data() {
  5.        
  6. $this->data="aaa";
  7. return $this->data;
  8.  
  9. }
  10. }
  11. class b
  12. {
  13. function getData() {
  14. $data = new a;  
  15. echo $data->Data();
  16.        
  17. }
  18. }
  19.  
  20. $a = new b;
  21. $a->getData();

есть ещё куча других вариантов
5. EuGen - 29 Мая, 2011 - 14:58:03 - перейти к сообщению
"Не грузится" так как, подозреваю, уходит в бесконечную рекурсию.
У Вас есть 2 разных класса, никак не связанных, Вы же хотите, чтобы без передачи параметра один класс сразу же получал свойства второго.
Можете сделать наследование, к примеру. Мне не совсем понятно, зачем для вывода использовать отдельный класс, но все же:
PHP:
скопировать код в буфер обмена
  1.  
  2. class foo
  3. {
  4.    public $data;
  5.    public function Data($data)
  6.    {
  7.       $this->data=$data;
  8.       bar::getData($this->data);
  9.    }
  10. }
  11.  
  12. class bar
  13. {
  14.    public static function getData($data)
  15.    {
  16.       echo($data);
  17.    }
  18. }
  19.  
  20. $foo = new foo();
  21. $foo->Data('baz');
  22.  
6. Maskca - 29 Мая, 2011 - 15:06:16 - перейти к сообщению
А если допусти переменной data присвоен массив, то как тогда сделать вывод, так как вы показали выводится только первая строка.
(Добавление)
Спасибо, все заработало

 

Powered by ExBB FM 1.0 RC1