Kor*_*gay 12 php ob-get-contents
这是我正在阅读的书中的示例代码:
ob_start();
include("{$path}.ini");
$string = ob_get_contents();
ob_end_clean();
$pairs = parse_ini_string($string);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何ob_get_contents()知道从哪里获取内容?({$ path} .ini在这种情况下)?
Rud*_*ser 12
ob_get_contents你调用后只需获取输出缓冲区的内容ob_start().从本质上讲,PHP中的输出缓冲区会捕获任何已输出到浏览器的内容(不包括标题).它可能在您需要过滤某些输出的情况下很有用,或者您正在使用var_dump将输出直接写入屏幕的PHP方法(例如),而您更喜欢该方法在字符串中的返回值.
在这种情况下,因为你正在include()处理.ini文件,它的内容将基本上输出到屏幕,ob_get_contents()并将获取文件的内容.
如果您要放在echo "I'm a little teapot short and stout";下面include,这也将包含在文件$string正文之后.ini.
但是,在您的特定情况下,输出缓冲是一种不必要的开销,只需file_get_contents在.ini文件上使用即可.我不确定为什么一本书甚至会包含这些代码.
"ob"代表"输出缓冲区".当您调用时ob_start(),PHP将所有输出(使用echo等)重新路由到输出缓冲区.然后,您可以使用其他ob_*函数来检索和/或清除缓冲区内容.
在您的示例中,它将缓冲由引用的文件生成的任何输出"{$path}.ini".当你包含它时,它的输出被添加到缓冲区,当你调用ob_get_contents()它时,它会检索缓冲区的内容.