У меня есть функция библиотеки PHP, ожидающая обратного вызова без аргументов. Я знаю, что могу передать метод объекта с array($this , 'my_function_name')
, но как я могу дать параметры my_function_name
? Я нашел решение, используя create_function
, но из руководства PHP. Я вижу, что он имеет проблемы с безопасностью.передать обратный вызов С аргументами в PHP
ответ
$that = $this;
$wrapper = function() use($that) {
return $that->my_function_name('arg1', 'arg2');
};
Это работает, но я думаю, что это требует php 5.3. Я делаю тему Wordpress, поэтому «использовать» она еще не готова для меня. –
@Emanuel Mocean: тогда у вас нет другого хорошего выбора, кроме создания для этого реального метода. 'public function wrapper() ...' – zerkms
В моем конкретном случае мне все еще нужно найти способ передать параметры в оболочку публичных функций, потому что единственный раз, когда я знаю, что я хочу предоставить в качестве параметра для обратного вызова, является то, когда Я передаю обратный вызов. Другими словами, мне нужна часть «use», чтобы сделать мои локальные переменные доступными в обратном вызове. –
Это будет зависеть от ваших функций библиотеки, инициирующих метод обратного вызова. Вы упомянули, что вы делаете тему Wordpress. Обычно WP использует метод call_user_func
. В вашей библиотеке функции, использовать эту функцию, чтобы вызвать обратный вызов с аргументами, завернуть аргумент методов при вызове его:
Ответный Определение:
$callbackArg = "Got here";
defined_lib_func(array($this , 'my_function_name'), $callbackArg);
Библиотека сценария:
function defined_lib_function($callback, $args) {
call_user_func($callback, $args);
}
для нескольких аргументы, просто передайте их как массив и определите метод обратного вызова, чтобы принять массив в качестве аргумента.
- 1. Угловой обратный вызов с аргументами
- 2. Как выполняется обратный вызов с аргументами?
- 3. Как вызвать обратный вызов с аргументами C#
- 4. JQuery Обратный вызов с аргументами - новичок
- 5. tornado PeriodicCallback: обеспечить обратный вызов с аргументами?
- 6. передать обратный вызов классу
- 7. Как передать обратный вызов как переменную в предопределенный обратный вызов
- 8. Javascript - Как обеспечить обратный вызов с конкретными аргументами?
- 9. Обратный вызов запроса с аргументами и синхронными запросами
- 10. Вызов Java из PHP с аргументами JSON
- 11. Вызов функции с несколькими аргументами в PHP
- 12. Обратный вызов Vungle в PHP
- 13. Как передать переменную в обратный вызов mongodb?
- 14. вызов rsource с аргументами
- 15. Как передать имя функции в обратный вызов?
- 16. передать int в обратный вызов C
- 17. jQuery передать больше параметров в обратный вызов
- 18. Javascript вызов функции с аргументами
- 19. Вызов GDB с аргументами
- 20. вызов обработчика событий с аргументами
- 21. Передать переменной на обратный вызов шаблона
- 22. вызов программы с аргументами
- 23. Как передать переменную обратный вызов re.sub?
- 24. passjs facebook передать запрос на обратный вызов
- 25. Вызов функции pdo с аргументами
- 26. Как передать обратный вызов как функцию
- 27. вызов функции perl с аргументами
- 28. Получить обратный вызов оплаты Paypal в PHP
- 29. Вызов Java из PHP с аргументами как массивы
- 30. Вызов функции с аргументами в другую функцию
Оберните его другой функцией (предположительно анонимной) – zerkms
@zerkms - в этом случае анонимная функция все равно получит аргумент из функции «вызова» библиотеки. Но я хочу дать ему свои собственные параметры. –