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 :: вопрос по call_user_func_array()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
lowmax
Отправлено: 17 Августа, 2012 - 23:40:46
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


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




А как передать вот такую хрень в эту функцию?????????????????????????????????????????????????????
запарился

PHP:
скопировать код в буфер обмена
  1. fuction user($fun,$arg) {
  2.  
  3. return call_user_func_array($this->tpl->{$fun},$arg);
  4.  
  5. }


этот код выдает предупреждение

все начиналось отсюда
http://forum.php.su/topic.php?fo...1&topic=6792

приходится использовать вот такую хренатень
PHP:
скопировать код в буфер обмена
  1.  
  2. private function sourceout($fun,$arg) {
  3.                 $res='';
  4.                 switch(count($arg)) {
  5.                         case 1:
  6.                                 $res=$this->tpl->{$fun}($arg[0]);
  7.                         break;
  8.                         case 2:
  9.                                 $res=$this->tpl->{$fun}($arg[0],$arg[1]);
  10.                         break;
  11.                         case 3:
  12.                                 $res=$this->tpl->{$fun}($arg[0],$arg[1],$arg[2]);
  13.                         break;
  14.                         case 4:
  15.                                 $res=$this->tpl->{$fun}($arg[0],$arg[1],$arg[2],$arg[3]);
  16.                         break;
  17.                         case 5:
  18.                                 $res=$this->tpl->{$fun}($arg[0],$arg[1],$arg[2],$arg[3],$arg[4]);
  19.                         break;
  20.                 }
  21.                 //$res=call_user_func_array(array($this, "tpl", $fun),$arg);
  22.                 return $res;
  23.         }


но это не вариант, откуда же я знаю сколько значений в массиве

помогите кто знает как правильно передать $this->tpl->{$fun} в call_user_func_array()
по идее нужно в виде строки
но тогда на что будет указывать $this
либо нужна какая то оберка, либо чтото в версии php
у меня версия 5.0 и менять на >=5.3 не намерян в ближайшее время

??? Непонял!

(Отредактировано автором: 17 Августа, 2012 - 23:45:11)

 
 Top
OrmaJever Модератор
Отправлено: 18 Августа, 2012 - 00:18:25
Post Id



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


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


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




что-то страшное тут творится. Чем

Не подходит? Однако Вызывает функцию с масивом параметров
(Добавление)
ааа, прочитал в соседней теме что проблема в обьекте, его некуда влепить. Для вызова метода достаточно передавать масив, нулевым индексом которого будет обьект, а первым имя метода


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



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


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




OrmaJever пишет:
ааа, прочитал в соседней теме что проблема в обьекте, его некуда влепить. Для вызова метода достаточно передавать масив, нулевым индексом которого будет обьект, а первым имя метода

call_user_func_array(array($this->tpl, $fun) ,$arg);


спасибо!!! Улыбка

А работать одинаково будет в php 5.0 и более поздних версиях?

P.S.
а то например
в 5.3 уже не поддерживается, а в 5.0 все ок

(Отредактировано автором: 18 Августа, 2012 - 00:31:36)

 
 Top
OrmaJever Модератор
Отправлено: 18 Августа, 2012 - 09:29:26
Post Id



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


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


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




lowmax пишет:
А работать одинаково будет в php 5.0 и более поздних версиях?

Конечно. Насчёт устаревших функций можите прочитать
http://php.su/php/?migration53


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 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