ob_*()系列函数的使用(输出控制缓冲)

<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);

echo '(1)孩儿立志出乡关' . PHP_EOL;

ob_start(); // 打开输出控制缓冲
echo '(2)学不成名誓不还' . PHP_EOL;
echo '(3)埋骨何须桑梓地' . PHP_EOL;
$contents = ob_get_clean(); // 得到当前缓冲区的内容并删除当前输出缓冲区

echo '(4)人生无处不青山' . PHP_EOL;

echo $contents;

// (1)孩儿立志出乡关
// (4)人生无处不青山
// (2)学不成名誓不还
// (3)埋骨何须桑梓地


//========== 总结 ==========//
// 1、使用ob_start()打开输出控制缓冲后,后续所有输出(不限于echo,还有print_r()、var_dump()、phpinfo()等也属于输出)都会被暂存到缓冲区,
//    缓冲区可以被清空,而一旦清空缓冲区这些暂存到缓冲区的内容就不会显示在页面上。
// 2、输出控制缓冲一个经典的使用场景就是在不干扰页面的前提下使用var_dump()收集一些数据用于分析,具体实现可看下面的代码。



<?php
declare(strict_types=1);
ini_set('display_errors', 'On');
error_reporting(-1);

echo '(1)孩儿立志出乡关' . PHP_EOL;
echo '(2)学不成名誓不还' . PHP_EOL;

$profile = ['name' => '张三', 'gender' => '男', 'age' => 18];
ob_start(); // 打开输出控制缓冲
var_dump($profile); // var_dump()的输出被暂存到缓冲区,所以这里不会输出任何内容
$dump = ob_get_clean(); // 从缓冲区获取var_dump()的内容,然后清空缓冲区
file_put_contents(__DIR__ . '/dump.txt', $dump); // 将var_dump()的内容保存到文件(或数据库)

echo '(3)埋骨何须桑梓地' . PHP_EOL;
echo '(4)人生无处不青山' . PHP_EOL;

// (1)孩儿立志出乡关
// (2)学不成名誓不还
// (3)埋骨何须桑梓地
// (4)人生无处不青山

//========== [dump.txt]文件的内容 ==========//
// array(3) {
//   ["name"]=>
//   string(6) "张三"
//   ["gender"]=>
//   string(3) "男"
//   ["age"]=>
//   int(18)
// }

Copyright © 2024 码农人生. All Rights Reserved