php Передача дополнительных параметров в фукцию обратного вызова (callback, function use). Нестатические методы
Primary tabs
Проблема
Предположим, что вы не можете поменять элементы, которые должен ожидать обработчик на входе, а вам нужно передать внутрь дополнительный параметр.
Решение
Чтобы решить эту проблему:
- Сделайте обработчик анонимной функцией
- Используйте конструкцию 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
- Log in to post comments
- 2503 reads