Задать вопрос

Как выполнить функцию из строки в 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));

то я получаю результат
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Средний 9 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 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.';');
	}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы