Как выполнить функцию из строки в PHP?

Всем привет, у меня есть массив, в массиве мне приходит функция.
640085d80a312396900477.png
[UNPACK] => function($arOrder){return (((CSaleBasketFilter::AmountFilter($arOrder, "") >= 4650))); };
- данный элемент массива является типом string

Как можно вызвать данную функцию?

Пробовал делать так
$funcUnpack = $arDiscount['UNPACK'];
$callFuncUnpack = call_user_func($funcUnpack, $arOrder);
var_dump($callFuncUnpack);

Но ничего не происходить.

Но если скопировать данную функцию и запустить ее отдельно
$callFunc = function($arOrder){return (((CSaleBasketFilter::AmountFilter($arOrder, "") >= 4650))); };
print_r($callFunc($arOrder));

то я получаю результат
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Не стоит делать вот так:
eval("\$calc_func = function(\$a){return (CSaleBasketFilter::AmountFilter(\$a, \"\") >= 4650); };");
print_r($calc_func($arOrder));
Ответ написан
Комментировать
@tgarl
битрикс решает эту проблему вот так:
protected static function __Unpack($arProduct, $strUnpack)
	{
		if (empty($strUnpack))
			return false;
		return eval('return '.$strUnpack.';');
	}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы