У меня есть функция, которая может быть использована в CLI или веб-приложении, поскольку, как говорится, есть небольшая разница в этом процессе; например: если я использую эту функцию для CLI, она будет использовать индикатор выполнения текста, но это не имеет смысла, если я использую эту функцию для веб-приложения.оптимальный способ передачи нескольких функций обратного вызова в качестве аргументов?
Функция в основном представляет собой петлю; поэтому я ищу способ сделать эту функцию гибкой, позволяя передавать код в качестве аргумента, чтобы он выполнялся в конце каждого цикла цикла. Поэтому, если я использую эту функцию в CLI; я передам инкрементную функцию прогресса для продвижения индикатора выполнения и т. д.
Мое текущее решение - передать экземпляр объекта состояния выполнения, который, я думаю, не является правильным решением; потому что в долгосрочной перспективе он не кажется гибким.
демонстрационный пример того, что я уже делаю:
function myFunction($progressBar = null)
{
for($i = 0; $i......)
{
//Do stuff
....
//finally...
if(!empty($progressBar))
$progressBar->advance();
}
}
Так что, если я хочу добавить еще одну функцию в конце цикла, я должен передать его в качестве аргумента и вызова это вручную позже; но, как я уже сказал, это просто не кажется правильным.
Я подумываю использовать функцию обратного вызова (анонимная функция передается myFunction). Но что это правильный способ сделать это; должен ли я сделать каждую функцию обратного вызова как отдельный аргумент? или, чтобы сделать его еще более гибким, следует ли группировать все функции обратного вызова в массиве (если это возможно).