Как сохранить результат эха в переменной без использования эха или печати в php? - PullRequest
0 голосов
/ 20 сентября 2019

Я создаю динамический запрос через цикл в виде строки и хочу выполнить этот запрос и сохранить результат в переменной, а затем вернуть этот результат как json для целей ajax.Но проблема здесь, если я повторяю запрос, который прекращает выполнение дальше и просто возвращает сам запрос.

  $data = 'Share::all();';
  ob_start();
  echo $data; // stop executing here
  $returnData = ob_get_contents();
  ob_end_clean();
  return $returnData;

1 Ответ

1 голос
/ 20 сентября 2019

Прямой Eloquent Call

Я думаю, вам может понадобиться эта строка вместо всего кода, который вы написали:

return Share::all()->toArray();

Печать фрагмента кода php (т.е. 'Share::all();' вваш случай), так как строка не выполняет код.И это, конечно, не даст вам результата выполнения этого кода.

Использование выходного буфера

Или, возможно, вы захотите использовать опасный eval для анализа вывода кода?В этом случае:

$data = 'echo "hello world";';

$returnData = (function ($code) {
  ob_start();
  eval($code); // stop executing here
  return ob_get_clean();
})($data);

var_dump($returnData);

Обратите внимание, что возвращаемые данные могут быть только строковыми.Это никогда не может быть ничего, кроме простой строки.Поэтому для меня не имеет смысла, если вы хотите передать «результат запроса» с выходным буфером.

Просто eval

Возможно, вы на самом деле думаете об этом.

$data = 'return Share::all()->toArray();';
$returnData = eval($data);
var_dump($returnData);

Но вы получите превосходный результат с помощью современного PHP-кода с пространством имен.Плюс запуск eval действительно не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...