php Передача дополнительных параметров в фукцию обратного вызова (callback, function use). Нестатические методы

Проблема

Предположим, что вы не можете поменять элементы, которые должен ожидать обработчик на входе, а вам нужно передать внутрь дополнительный параметр.

Решение

Чтобы решить эту проблему:

  1. Сделайте обработчик анонимной функцией
  2. Используйте конструкцию function... use чтобы неявно передать функции переменные из текущей области видимости.

то есть, используйте вместо:

function myfunction($standartVal1, $standartVal2)
{
	 $taxonomyName = 'addValue!'; // переменная жестко задана внутри функции
	 echo $taxonomyName;
};

add_filter('filterName', 'myfunction');

подход:

$taxonomyName = 'external addValue!';
$myfunction = function($standartVal1, $standartVal2) use ($taxonomyName) 
{
	 echo $taxonomyName; // теперь динамически определяется снаружи
};

add_filter('filterName', $myfunction);

-- такое решение позволяет использовать в качестве обработчиков (колбеков) "нестатические" состояния, завязанные на конкретный объект, ведь ни что не мешает завернуть последний код в нестатический метод класса:

public function setTaxonomyNameHandler($taxonomyName)
{
	$myfunction = function($standartVal1, $standartVal2) use ($taxonomyName) 
	{
		 echo $taxonomyName; // теперь динамически определяется снаружи
	};

	add_filter('filterName', 'myfunction');
}

Спасибо за подсказку @math2