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]   

> Без описания
Shtorm_sai
Отправлено: 05 Июля, 2018 - 14:53:35
Post Id



Частый гость


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


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




Доброго всем времени суток. Вроде элементарное, а догнать не могу.
В конструкторе класса присваиваю к свойству массив:

PHP:
скопировать код в буфер обмена
  1.  
  2. $this->param = array('key1' => $val1, 'key2' => $val2, 'key3' => $val2);
  3.  


Далее в методе я добавляю ключи и значения:

PHP:
скопировать код в буфер обмена
  1.  
  2. function method1($data){
  3.  
  4. foreach($data AS $k=>$v){
  5.  
  6. $this->param[$k] = $v;
  7.  
  8. }
  9.                    
  10. $this->send();
  11.  
  12. }
  13.  


В метод send приходят только те значения которые указаны в конструкторе.
В чем моя ошибка?
 
 Top
andrewkard
Отправлено: 05 Июля, 2018 - 15:47:08
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Ключи не совпадают? Может ошибка есть где? Вот сэмулировал, все норм:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Test{
  3.     public $params;
  4.  
  5.     function __construct($val1,$val2,$val3){
  6.         $this->params = array('key1' => $val1, 'key2' => $val2, 'key3' => $val2);
  7.     }
  8.  
  9.     function method1($data){
  10.  
  11.         foreach($data AS $k=>$v){
  12.  
  13.             $this->params[$k] = $v;
  14.  
  15.         }
  16.  
  17.         return $this->send();
  18.  
  19.     }
  20.  
  21.     function send(){
  22.         return $this->params;
  23.     }
  24. }
  25.  
  26.  
  27.  
  28. $test = new Test(1,2,3);
  29.  
  30. print_r($test->method1([4,5]));
  31.  


Array
(
[key1] => 1
[key2] => 2
[key3] => 2
[0] => 4
[1] => 5
)
 
 Top
Shtorm_sai
Отправлено: 05 Июля, 2018 - 16:15:26
Post Id



Частый гость


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


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




andrewkard пишет:
Ключи не совпадают? Может ошибка есть где? Вот сэмулировал, все норм:


Сорян, я сам затупил)

У меня идёт вызов метода и следом идёт другой вызов метода.
Вот второй вызов тупо не перезаписывается, использует данные из первого метода.

Т.е. по факту получается следующее:

PHP:
скопировать код в буфер обмена
  1.  
  2. class Test{
  3.     public $params;
  4.  
  5.     function __construct($val1,$val2,$val3){
  6.         $this->params = array('key1' => $val1, 'key2' => $val2, 'key3' => $val2);
  7.     }
  8.  
  9.     function method1(){
  10.  
  11.         return $this->send();
  12.  
  13.     }
  14.  
  15.     function method2($data){
  16.  
  17.         foreach($data AS $k=>$v){
  18.  
  19.             $this->params[$k] = $v;
  20.  
  21.         }
  22.  
  23.         return $this->send();
  24.  
  25.     }
  26.  
  27.     function send(){
  28.         return $this->params;
  29.     }
  30. }
  31.  
  32.  
  33. $test = new Test(1,2,3);
  34.  
  35. print_r($test->method1());
  36. print_r($test->method2([4,5]));
  37.  


method2 вернет значения переданные в конструктор.
Как это вылечить?

(Отредактировано автором: 05 Июля, 2018 - 16:19:03)

 
 Top
andrewkard
Отправлено: 05 Июля, 2018 - 16:34:15
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Shtorm_sai пишет:
method2 вернет значения переданные в конструктор.

не только, как и ожидается:
Array
(
[key1] => 1
[key2] => 2
[key3] => 2
[0] => 4
[1] => 5
)
 
 Top
Shtorm_sai
Отправлено: 05 Июля, 2018 - 16:56:38
Post Id



Частый гость


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


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




andrewkard пишет:
Shtorm_sai пишет:
method2 вернет значения переданные в конструктор.

не только, как и ожидается:
Array
(
[key1] => 1
[key2] => 2
[key3] => 2
[0] => 4
[1] => 5
)


Да все верно, разобрался)) Вот я тупняка поймал))) Извините за беспокойство))

Совет новичкам. Не сидите сутками за кодом иначе элементарных вещей не увидите))
 
 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