Как я могу установить имя выходного буфера в php?

Я просматривал документацию по PHP ob_get_status функции и нашел следующее:

Возвращаемые значения:

Если звонили без full_status параметр или с full_status знак равно
ЛОЖНЫЙ возвращается простой массив со следующими элементами:

Array (
[level] => 2
[type] => 0
[status] => 0
[name] => URL-Rewriter
[del] => 1
)

Все кажется довольно ясным, однако все интернет-сети, кажется, не могут ответить на один вопрос, который возник — Как я могу установить имя выходного буфера?

Возможно ли это сделать? Я не могу найти никакой подсказки ни в самой документации, ни где-либо еще.
Однако в документации упоминается, что

name = Имя активного обработчика вывода или «обработчик вывода по умолчанию», если
ни один не установлен

который в значительной степени подразумевает это можно установить как угодно.

Ребята, у вас есть идеи, если это можно сделать? Любая помощь будет очень признательна.

4

Решение

Используя ob_start Вы можете включить буферизацию вывода в PHP,

Обратите внимание, что функция имеет такую ​​подпись:

bool ob_start ([callable $ output_callback = NULL [, int $ chunk_size =
0 [, int $ flags = PHP_OUTPUT_HANDLER_STDFLAGS]]])

Вы можете передать именованную функцию в качестве допустимого обратного вызова.

Например:

<?php

function test_handler($a) {
return $a;
}

ob_start('test_handler');

var_dump(ob_get_status());

Дам тебе:

array(7) {
["name"]=>
string(12) "test_handler"["type"]=>
int(1)
["flags"]=>
int(113)
["level"]=>
int(0)
["chunk_size"]=>
int(0)
["buffer_size"]=>
int(16384)
["buffer_used"]=>
int(0)
}
2

Другие решения

Вы не можете установить имя. Он печатает имя обратного вызова.

Если ваш обратный вызов является функцией с именем foo_bar:

[name] => "foo_bar"

Если ваш обратный вызов является методом foo_bar класса кульминация:

[name] => "Acme::foo_bar"

Если ваш обратный вызов является анонимной функцией:

[name] => "Closure::__invoke"
2

Имя, которое вы устанавливаете в выходном буфере, является именем обработчика вывода, который вызывается, когда он очищается.

Например

ob_start('my_buffer');function my_buffer($buff){
return str_replace(":)","<img src=\"smiley\"/>",$buff);
}
1
По вопросам рекламы [email protected]