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 :: create_function в анонимную функцию

 PHP.SU

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


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

> Без описания
sektor2704
Отправлено: 18 Сентября, 2017 - 21:25:49
Post Id


Новичок


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


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




Здравствуйте!
Что-то не получается заменить функцию create_function анонимной функцией.

Есть такая функция:
PHP:
скопировать код в буфер обмена
  1.  
  2. function my_function($value, $raw_value, $code)
  3. {
  4.         $lambda_function = create_function('&$data, $raw', $code);
  5.        
  6.         $result = $lambda_function($value, $raw_value);
  7.        
  8.         return $result;
  9. }
  10.  


Пытаюсь заменить на:
PHP:
скопировать код в буфер обмена
  1.  
  2. function my_function($value, $raw_value, $code)
  3. {
  4.         $lambda_function = function(&$data, $raw) use ($code)
  5.         {
  6.                 $code;
  7.         };
  8.        
  9.         $result = $lambda_function($value, $raw_value);
  10.        
  11.         return $result;
  12. }
  13.  

Но, такой вариант не отрабатывает как первый.
Подскажите, что я делаю не так?
 
 Top
Строитель Модератор
Отправлено: 18 Сентября, 2017 - 21:34:20
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




sektor2704, в теле анонимной функции надо ведь что-то написать, а у вас там просто переменная $code, которая кстати, даже не возвращается конструкцией return.
(Добавление)
sektor2704, набросал пример вашей анонимной функции, которая просто печатает в браузер значения передаваемых в неё переменных:
Спойлер (Отобразить)
 
 Top
sektor2704
Отправлено: 18 Сентября, 2017 - 21:42:10
Post Id


Новичок


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


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




Строитель
В переменную $code передаются значения вида:
 
 Top
Строитель Модератор
Отправлено: 18 Сентября, 2017 - 21:47:43
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




sektor2704 пишет:
В переменную $code передаются значения вида:
И что? Вы можете что угодно передавать. Кстати, конструкцию use() использовать не обязательно, если в теле функции не требуется изменение передаваемых переменных
Спойлер (Отобразить)
 
 Top
Мелкий Супермодератор
Отправлено: 18 Сентября, 2017 - 23:14:15
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




sektor2704 пишет:
В переменную $code передаются значения вида:

Зачем передаются?
Код вам необходимо править именно там. Например, передавать уже сформированную callback функцию. Но необходимо понимать, какую именно задачу вы хотите решить и почему изначально было сделано так, а не передачей callback параметром.

Если хотите костылей и хардкода неясно ради чего - то подсказка: create_function является обёрткой над eval.


-----
PostgreSQL DBA
 
 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