Я пишу код для программирования на санскрите.
Ранее машина находилась в тестовом режиме, поэтому я тестировал и редактировал внешний интерфейс HTML в своем PHP-коде, отправляя переменные методом GET.
Теперь код более или менее стал стабильным.
Теперь я хочу записать вывод в предопределенный файл txt / HTML, а не выводить его на экран браузера.
Моя типичная строка кода выглядит следующим образом:
if ( $a === 1 ) // if a condition is satisfied.
{
//Do something here
echo "<p class = sa >X rule has applied. </p>\n";
}
Есть ли какой-то метод, с помощью которого я могу манипулировать функцией echo и использовать ее как —
fputs ($ outfile, $ b); где $ b — строка, которая выводится.
В настоящем деле:
fputs($outfile,"<p class = sa >X rule has applied. </p>\n");
Код все еще находится в стадии разработки. Поэтому я не думаю, что это хороший способ заменить это эхо на fputs некоторым регулярным выражением. В противном случае для одного изменения — мне придется внести изменения в обе версии кода — fputs и echo one.
Что заставило меня задуматься об этом — в Python я могу переопределить функции python, например Я могу определить пользовательскую функцию max (a, b), даже если это встроенная функция. Я не знаю, как заставить мое «эхо» выполнять работу «fputs» в PHP.
На языке PHP я хочу сделать это в командной строке.
например
if (isset($argv[0])){
// Some function to replace echo with fputs for the whole program
}
Любые указатели на это приветствуются.
Ты можешь использовать выходная буферизация для этого, потому что это позволяет вам указать функцию обратного вызова, которая может использоваться для преобразования буферизованных данных. Определите функцию обратного вызова, которая перехватывает буферизованный вывод и записывает его в файл, а в браузер возвращает пустую строку:
$outfile = fopen('log.txt', 'wb');
ob_start(function($x) use($outfile) {
fwrite($outfile, $x);
return '';
});
Если вы хотите отключить его во время сценария, чтобы вы могли снова отправить вывод в браузер, просто позвоните ob_end_flush();
.
Других решений пока нет …