我一直在浏览PHP的 ob_get_status 功能的文档,并发现了以下内容:
返回值:
如果在没有 full_status 参数或 full_status =的情况下调用 FALSE 返回一个包含以下元素的简单数组:
Array ( [level] => 2 [type] => 0 [status] => 0 [name] => URL-Rewriter [del] => 1 )
所有看起来都非常清楚,但是所有的互联网似乎都无法回答出现的一个问题 - 如何设置输出缓冲区的名称?
甚至可以这样做吗?我在文档本身或其他任何地方都找不到任何线索。 但是文档提到了
name =活动输出处理程序的名称或'默认输出处理程序'如果 没有设置
几乎暗示它可以以某种方式设置它。
你们有任何想法是否可以做到这一点?任何帮助都会受到很大的帮助。
答案 0 :(得分:2)
您无法设置名称。它打印回调的名称。
如果您的回调是一个名为 foo_bar 的函数:
$fields = array();
foreach ($this->input->post('fields') as $selectedOption){
echo $str= $selectedOption."\n";
$this->load->model('custom_field', '', TRUE);
$recordDetails = $this->custom_field->getRecordDetails($str);
$result = json_decode(json_encode($recordDetails[0]), true);
$fields['columnName'] = array(
'type' => $result['fieldType'],
'constraint' => $result['fieldLimit']
);
}
如果您的回调是类 Acme 的方法 foo_bar :
[name] => "foo_bar"
如果您的回调是匿名函数:
[name] => "Acme::foo_bar"
答案 1 :(得分:2)
使用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 :(得分:1)
您在输出缓冲区上设置的名称是刷新时调用的输出处理程序的名称。
例如
ob_start('my_buffer');
function my_buffer($buff){
return str_replace(":)","<img src=\"smiley\"/>",$buff);
}