В PHP, там способ получить вывод файла PHP в переменную, не используя выходную буферизацию?

Вы можете удалить прослушиватели событий только на внешних функциях. Вы не можете удалить прослушиватели событий для анонимных функций, как вы использовали.

Замените этот код

window.addEventListener('scroll', () => { ... };

и сделайте это вместо этого

window.addEventListener('scroll', someFunction);

Затем переместите свою функциональную логику в функцию

function someFunction() {
  // add logic here
}

Затем можно удалить щелкните прослушиватель, когда выполняется какое-то условие, т.е. когда элемент находится в области просмотра

window.removeEventListener('scroll', someFunction);
9
задан Jason Plank 2 November 2011 в 20:20
поделиться

7 ответов

Небольшой известной функцией PHP является способность рассматривать, включал/требовал файл как вызов функции, с возвращаемым значением.

Например:

// myinclude.php
$value = 'foo';
$otherValue = 'bar';
return $value . $otherValue;


// index.php
$output = include './myinclude.php';
echo $output;
// Will echo foobar
26
ответ дан 4 December 2019 в 06:23
поделиться

Из того, что я могу сказать в документации PHP, нет. Почему Вы хотите избежать выходной буферизации?

Единственным способом обойти это были бы hacky методы, включающие или вызывающие командную строку php клиент или делающие вихревой запрос на основе того, что доступно и каковы конкретные требования.

9
ответ дан 4 December 2019 в 06:23
поделиться

После чтения общих предложений, чтения набора документации и проигрывания вокруг с некоторыми вещами, я придумал это:

<?php
$file = file_get_contents('/path/to/file.php');
$xhtml = eval("?>$file");
?>

Это настолько близко, как я мог добраться, но это, к сожалению, не работает. Ключ к этому должен включать закрытие, которое укусил PHP (?>) перед содержанием файла. Это возьмет eval() из режима PHP-оценки и будет рассматривать содержание файла, запускающегося как non-PHP код. Затем, если будут блоки кода PHP в файле, то они будут оценены как PHP. Неприятность - то, что это не сохраняет eval'd содержание в переменной, это просто производит его к странице.

Спасибо за справку все!

4
ответ дан 4 December 2019 в 06:23
поделиться

Сделайте вихревой запрос к php странице, по существу симулировав быть браузером.

0
ответ дан 4 December 2019 в 06:23
поделиться

То, что Вы могли сделать, если файл локален, является загрузкой сценарий в переменную как строка, то выполненная оценка на строке. Затем можно сделать весь другой материал впоследствии. Иначе необходимо использовать выходную буферизацию.

0
ответ дан 4 December 2019 в 06:23
поделиться

Joeri Sebrechts корректен. Эквивалентный и немного более легкий метод доступен, если Сценарием PHP является доступный HTTP:

$data = file_get_contents('http://google.com/');

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

1
ответ дан 4 December 2019 в 06:23
поделиться
$fileData = file_get_contents('fileOnDisk.php');
$results = eval($fileData);

Но проверьте документацию относительно оценки, потому что у Вас на самом деле должен быть файл, Вы называете возврат его результатами, а не просто повторяете их:

http://us2.php.net/eval

0
ответ дан 4 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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