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]   

> Без описания
Nicodinus
Отправлено: 21 Февраля, 2012 - 11:44:05
Post Id



Новичок


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


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




Собственно хотел узнать, возможно ли вызвать уже инициализированный класс как функцию? Огорчение

Допустим имеем код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class test //Думаю тут нужно подключить интерфейс из spl или ещё какой-нить библиотеки, но какой не могу найти//
  3. {
  4.         private $vars = array();
  5.        
  6.         public function add() //Сама функция
  7.         {
  8.                 $args = func_get_args();
  9.                 for($i = 1; $i < sizeof($args); $i += 2) $this->vars[$args[$i-1]] = $args[$i];
  10.                 //пример конечно не удачный, но другого я придумать не смог
  11.         }
  12. }
  13.  
  14. $test = new test;
  15. $test($key1, $value1, $key2, $value2);
  16. ?>

(Отредактировано автором: 21 Февраля, 2012 - 11:48:25)

 
 Top
sKaa
Отправлено: 21 Февраля, 2012 - 11:51:37
Post Id



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


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


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

[+]


реализуй магический метод __invoke()
 
 Top
Zuldek
Отправлено: 21 Февраля, 2012 - 11:52:36
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


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




$test = new test;
$test->add($key1, $value1, $key2, $value2);
 
 Top
Nicodinus
Отправлено: 21 Февраля, 2012 - 11:54:32
Post Id



Новичок


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


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




sKaa, спасибо огромное, помогло Закатив глазки , жаль что + не могу поставить Хм
(Добавление)
Zuldek, ты немного меня не понял Радость, я не настолько туп, чтоб так не сделать, вон вариант с __invoke() тащит

PHP:
скопировать код в буфер обмена
  1. class test
  2. {
  3.         public $vars = array();
  4.        
  5.         public function __invoke()
  6.         {
  7.                 $args = func_get_args();
  8.                 $this->add($args);
  9.         }
  10.        
  11.         public function add($args) //Сама функция
  12.         {
  13.                 for($i = 1; $i < sizeof($args); $i += 2) $this->vars[$args[$i-1]] = $args[$i];
  14.                 //пример конечно не удачный, но другого я придумать не смог
  15.         }
  16. }
  17.  
  18. $test = new test;
  19. $test('123', '456', '789', '012');
  20. print_r($test->vars);

(Отредактировано автором: 21 Февраля, 2012 - 12:04:38)

 
 Top
Zuldek
Отправлено: 21 Февраля, 2012 - 12:04:25
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


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




уже понял, не вник в суть того что требовалось
 
 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